2015-05-11 99 views
1

在wordpress的single.php文件中有一個導航部分可以鏈接下一個或上一篇文章。 這是我用於上一篇/下一篇文章的代碼。我想這些鏈接打開相同類別的職位(在我的例子下面的「2」是該類別的ID):上一個和下一個鏈接在WordPress的同一類別

<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE, '2'); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE, '2'); ?> 

爲什麼它不工作?

回答

3

第四個參數適用於您要排除的類別,因此在這種情況下,您將排除類別2

卸下第四個參數應該做的伎倆:

<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE); ?> 

參考:next_post_linkprevious_post_link


更新

獲取相鄰帖子的鏈接只是一個子類別不是那麼簡單,但你可以申請所描述的方法在this answer,使用過濾器wp_get_object_terms指剛類別通緝。

因此,有你想要的類別的ID(在這種情況下,我使用2喜歡你的例子),這將是代碼放到你的single.php文件:

<?php 
    // set the category ID wanted 
    $GLOBALS['just_this_category'] = 2; 
    // add filter for navigation links 
    add_filter('wp_get_object_terms', 'my_custom_post_navigation'); ?> 
?> 

<!-- navigation links --> 
<?php previous_post_link('%link', '<i class="icon-chevron-left pull-left"></i>', TRUE); ?> 
<?php next_post_link('%link', '<i class="icon-chevron-right pull-right"></i>', TRUE); ?> 

<?php // remove filter just after navigation links 
    remove_filter('wp_get_object_terms', 'my_custom_post_navigation'); 
?> 

而這個過濾功能您functions.php文件:

function my_custom_post_navigation($terms){ 
    global $just_this_category; 

    if(array_search($just_this_category, (array)$terms) !== FALSE) 

     return array($just_this_category); 

    return array(); 

} 

正如你可以看到我使用全局變量$just_this_category的類別ID傳遞給過濾功能。

顯然,對於每一篇文章,你需要設置一個不同的類別ID(你可以自動檢索它,但如何取決於你如何管理你的類別)。

+0

但它無論如何不起作用。它顯示所有帖子,而不僅僅是一個類別的帖子。 –

+2

這些帖子是否屬於多個類別?正如參考文獻所言:「如果帖子同時在父級和子類別中,或者多於一個單詞,則下一個帖子鏈接將以任何這些術語引導到下一個帖子」。 – d79

+0

你說得對。它們屬於多個類別。是否有可能僅鏈接一個子類別? –

相關問題