您可以使用get_adjacent_post
函數中的過濾器來完成此操作。
在你的functions.php文件,添加:
function mytheme_previous_post_orderby_name($orderby){
return "ORDER BY p.post_title DESC LIMIT 1";
}
function mytheme_previous_post_where_name(){
global $post, $wpdb;
return $wpdb->prepare("WHERE p.post_title < %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type);
}
function mytheme_next_post_orderby_name($orderby){
return "ORDER BY p.post_title ASC LIMIT 1";
}
function mytheme_next_post_where_name(){
global $post, $wpdb;
return $wpdb->prepare("WHERE p.post_title > %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type);
}
然後在你的single.php頁面中添加過濾器,你打電話之前上一個/下一個帖子鏈接功能:
add_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10, 1);
add_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10, 1);
add_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10);
add_filter('get_next_post_where', 'mytheme_next_post_where_name', 10);
the_post_navigation();
remove_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10);
remove_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10);
remove_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10);
remove_filter('get_next_post_where', 'mytheme_next_post_where_name', 10);
如果您想要檢查您的具體post_type,您可以添加if如果在添加過濾器部分:
if($post->post_type == 'my_custom_post_type'){
add_filter(...);
the_post_navigation();
remove_filter(...);
}
或者,你可以使用一個post_type特定的single.php文件!
這對我的工作很好,但可能有一定的侷限性,如果您打算在此與同期限的職位相結合......
這是非常好的。非常感謝,夥伴。 – Cthulhu 2012-06-26 12:18:30
這個插件在幾年內還沒有更新,但它仍然很棒!有人應該再次測試它,以便它可以回到wp admin中的可安裝選項。我不得不重新從wp網站上傳它。 – 2016-08-23 22:42:25