I've got a 'story' Custom Publish Type and 'artist', writer' Taxonomies.

I have to set rewrite rules within the functions.php for that permalinks to appear such as this:

Artist (Taxonomy/Category):

Author (Taxonomy/Category):

Story (Custom Publish Type):

I've attempted some code I discovered in blogs with no success, and should not learn how to solve this.

I am employed in Wordpress 3..1

This may the secret for Story and Artist, although not for Author:

add_action('init', 'custom_init');
add_filter('post_type_link', 'story_permalink', 10, 3);

function custom_init(){  
    $story = array(  
    'query_var' => true,
    'rewrite' => false,
    $artist = array(
    'query_var' => true,
    'rewrite' => true
    $writer = array(
        'query_var' => true,
        'rewrite' => true

    register_post_type('story', $story);
    register_taxonomy('artist', 'story', $artist);
    register_taxonomy('writer', 'story', $writer);

    global $wp_rewrite;
    $story_structure = '/%artist%/%writer%/%story%';
    $wp_rewrite->add_rewrite_tag("%story%", '([^/]+)', "story=");
    $wp_rewrite->add_permastruct('story', $story_structure, false);

function story_permalink($permalink, $post_id, $leavename){
    $post = get_post($post_id);

    $rewritecode = array(
    $leavename? '' : '%postname%',
    $leavename? '' : '%pagename%',

    if('' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft'))){

        if (strpos($permalink, '%artist%') !== FALSE){
        $terms = wp_get_object_terms($post->ID, 'artist');  
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $artist = $terms[0]->slug;
        else $artist = 'unassigned-artist';         

    if (strpos($permalink, '%writer%') !== FALSE){
        $terms = wp_get_object_terms($post->ID, 'writer');  
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $writer = $terms[0]->slug;
        else $writer = 'unassigned-writer';         

    $rewritereplace = array(
    $permalink = str_replace($rewritecode, $rewritereplace, $permalink);
    return $permalink;

Hope it will help.