原始答案
the_post_navigation()
, 一直到其核心,使用
get_adjacent_post()
返回并显示当前查看帖子的下一篇和上一篇帖子。
默认情况下,这些相邻的帖子按发布日期返回。我们可以通过过滤相关的ORDERBY
SQL查询的子句。我们将使用的过滤器是get_{$adjacent}_post_sort
filter 动态{$adjacent}
零件参考next
或previous
链接
以下是过滤器的外观:
apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1", $post );
因此,在自定义插件或主题的函数文件中,我们可以执行以下操作:(
NOTE: 这是未经测试的,我们只会在显示特定帖子类型时添加过滤器
add_filter( \'get_next_post_sort\', \'wpse_220361_adjacent_post_sort\', 11, 2 );
add_filter( \'get_previous_post_sort\', \'wpse_220361_adjacent_post_sort\', 11, 2 );
function wpse_220361_adjacent_post_sort ( $orderby, $post )
{
// Make sure we are on our desired post type
if ( \'MY_CUSTOM_POST_TYPE_SLUG\' !== $post->post_type )
return $orderby;
// We are on the desired post type, lets alter the SQL
$orderby = str_replace( \'post_date\', \'menu_order\', $orderby );
return $orderby;
}