这个问题与使用高级插件的 WordPress 网站有关。
目前基于functions.php中的WP-PostViews插件为“大多数视图”启用了排序:
add_action( 'init', 'wpse13483_init' );
function wpse13483_init() {
add_rewrite_rule( '(.+?)/order/views/?$', 'index.php?category_name=$matches[1]&v_sortby=views&v_orderby=desc', 'top' );
}
但是现在尝试添加对基于 wpreviewsite.com 插件的“最高评价”排序的支持。不知何故,这绝对是可能的,因为这个插件带有一个“评分最高的帖子”小部件,它使用以下代码(以及其他不太重要的代码......相当肯定这是关键部分):
//Post sorting
$sort = get_option('rs_sort');
if ($sort == 'rating') {
add_filter('posts_fields', 'rs_weighted_fields');
add_filter('posts_join', 'rs_weighted_join');
add_filter('posts_groupby', 'rs_weighted_groupby');
add_filter('posts_orderby', 'rs_weighted_orderby');
} else if ($sort == 'comments') {
add_filter('posts_orderby', 'rs_comments_orderby');
}
希望了解如何使用这些 WordPress 后置过滤器并将它们以某种方式转换为 PHP 函数,或者以其他方式成为 functions.php 中的新重写规则。谢谢!