Kaiser\'s answer 是非常棒和彻底的,但是仅仅更改ORDER BY子句是不够的,除非您的menu_order
符合您的时间顺序。
我不能对此负责,但我在中发现了以下代码this gist:
<?php
/**
* Customize Adjacent Post Link Order
*/
function wpse73190_gist_adjacent_post_where($sql) {
if ( !is_main_query() || !is_singular() )
return $sql;
$the_post = get_post( get_the_ID() );
$patterns = array();
$patterns[] = \'/post_date/\';
$patterns[] = \'/\\\'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\\'/\';
$replacements = array();
$replacements[] = \'menu_order\';
$replacements[] = $the_post->menu_order;
return preg_replace( $patterns, $replacements, $sql );
}
add_filter( \'get_next_post_where\', \'wpse73190_gist_adjacent_post_where\' );
add_filter( \'get_previous_post_where\', \'wpse73190_gist_adjacent_post_where\' );
function wpse73190_gist_adjacent_post_sort($sql) {
if ( !is_main_query() || !is_singular() )
return $sql;
$pattern = \'/post_date/\';
$replacement = \'menu_order\';
return preg_replace( $pattern, $replacement, $sql );
}
add_filter( \'get_next_post_sort\', \'wpse73190_gist_adjacent_post_sort\' );
add_filter( \'get_previous_post_sort\', \'wpse73190_gist_adjacent_post_sort\' );
我已经修改了WP的函数名。东南部
如果只更改ORDER BY子句,查询仍会查找大于或小于当前发布日期的发布。如果你的帖子不按时间顺序排列,你就不会得到正确的帖子。
除了修改orderby子句外,这将更改where子句以查找menu\\u顺序大于或小于当前帖子menu\\u顺序的帖子。
orderby子句也不应该硬编码为使用DESC,因为它需要根据您是获得下一个还是上一个post链接进行切换。