2011-03-25 58 views
0

我有3個自定義帖子類型設置,我已經創建了每個自定義的永久鏈接結構。我遇到的問題是,第三個自定義文章類型我與自定義固定鏈接設置,被用於之前的2WordPress的自定義帖子類型和自定義永久鏈接結構錯誤

例子:

  • 分類
  • 就業
  • 贊助

以上是帖子類型,我將自定義的固定鏈接結構設置爲(對於每個): /post_type/post_id/

現在,上面的順序是他們設置的順序和贊助承擔所有這些。因此,例如:

/classified/100/ 
/employment/101/ 
/sponsorship/102/ 

以上都使用固定鏈接:

/sponsorship/100/ 
/sponsorship/101/ 
/sponsorship/102/ 

我在做什麼錯得到這個錯誤發生?這是一個永久鏈接結構錯誤嗎?下面是我用來爲每個創建自定義永久鏈接結構的代碼。唯一的區別是,%c_id%更改爲%e_id%和%s_id%的分類廣告,僱傭和贊助。此外,對「分類廣告」的引用分別改爲就業和贊助。

add_action('init', 'classifieds_rewrite'); 
function classifieds_rewrite() { 
    global $wp_rewrite; 

    $queryarg = 'post_type=classifieds&p='; 
    $wp_rewrite->add_rewrite_tag('%c_id%', '([^/]+)', $queryarg); 
    $wp_rewrite->add_permastruct('classifieds', '/classifieds/%c_id%/', false); 
} 

add_filter('post_type_link', 'classifieds_permalink', 1, 3); 
function classifieds_permalink($post_link, $id = 0) { 
    global $wp_rewrite; 
    $post = &get_post($id); 
    if (is_wp_error($post)) 
     return $post; 
    $newlink = $wp_rewrite->get_extra_permastruct('classifieds'); 
    $newlink = str_replace("%c_id%", $post->ID, $newlink); 
    $newlink = home_url(user_trailingslashit($newlink)); 
    return $newlink; 
} 

感謝您的幫助! :)

回答

2

如果我理解正確,您註冊了3種不同的帖子類型,並且您正在嘗試重寫每個帖子類型,以使它們的段落先於帖子ID。從每個帖子類型的slu start開始,似乎在您註冊每個帖子類型時發出重寫,這是否正確?如果沒有,您可以在註冊每個帖子類型時通過添加以下內容和其他參數來照顧這部分。

'rewrite' => array('slug' => 'classified', 'with_front' => true) 

具有廣泛的永久附加參考重寫這裏:http://shibashake.com/wordpress-theme/wordpress-permalink-add

+0

我有: ' '改寫'=> TRUE' ?? – fatwombat 2011-03-25 13:27:53

+0

如果你使用''rewrite'=> array('slug'=>'YourSlug','with_front'=> true)'它會用你指定的slug重寫你的帖子的固定鏈接。例如,如果您爲您的分類文章添加''rewrite'=> array('slug'=>'classified','with_front'=> true)',您的鏈接將被重寫爲www.yoursite.com/classified/your -post-title取決於您在WP管理員中設置的額外永久鏈接結構。 – ckaufman 2011-03-25 13:42:14

+0

是的,但我需要使用URL的第二部分的post_id。所以它需要/分類/ 124 /而不是/分類/ the-title-here/ 默認情況下有什麼辦法嗎?因爲我希望網站上的其他網頁能夠/ about /和/ contact/etc ...? – fatwombat 2011-03-25 14:02:45

相關問題