2010-10-03 116 views
2

我有一個「故事」自定義文章類型「藝術家」,作家」分類標準自定義文章類型,分類的永久鏈接重寫的WordPress 3.0.1

我需要在functions.php中的永久鏈接設置重寫規則看起來像這樣:

藝術家(分類/分類):
HTTP://www.example的.com /艾薩克-德意志
/%藝術家%

作家(分類/分類):
http://www.example.com/jean-paul-sartre
/%編劇%

故事(自定義文章類型) :
http://www.example.com/issac-deutscher/jean-paul-sartre/the-cat-is-under-the-table
/%artist%/%writer%/%story%

我已經嘗試了一些我在博客中找不到的代碼,但是無法弄清楚如何解決這個問題。

我在的WordPress 3.0.1

回答

2

這確實爲故事和藝術家的伎倆工作,而不是編劇:

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(
    '%artist%', 
    '%writer%', 
    $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(
     $artist, 
     $writer, 
     $post->post_name, 
     $post->post_name, 
    ); 
    $permalink = str_replace($rewritecode, $rewritereplace, $permalink); 
    } 
    else{ 
    } 
    return $permalink; 
} 

希望它能幫助。

+0

嗨@maukoquiroga!我複製了你的代碼並修改了一下,我已經替換了cpt和taxonomy的名字,並徹底刪除了作者的分類。不能讓它工作,只有404的。認爲你可以幫助我嗎?請看看: http://pastebin.com/Q19amsZL – 2013-01-10 10:46:36

相關問題