我创建了一个自定义帖子类型的主题reports
。我安装了一个与这种帖子类型交互的评级插件,允许用户对报告进行评级。它将帖子评分存储在两个字段中,sum
其中count
sum 是所有评分的总和,count 是单个评分的数量。
示例:如果 5 个人将帖子评分为 1、2、3、4 和 5,sum
则将是15
和count
将是5
。
当用户访问存档页面时,他们会看到帖子类型reports
的所有帖子的列表。report
但是,我想添加一个查询参数来过滤到平均评分为 4 或更高的帖子。我目前正在尝试pre_get_posts
按如下方式使用钩子:
add_filter( 'pre_get_posts', 'filterReports' );
function filterReports( $query ) {
if( is_post_type_archive( 'reports' ) && $_GET['top'] ) {
global $wpdb;
$query = $wpdb->prepare(
"SELECT *
FROM
wp_postmeta AS sum
wp_postmeta AS count
WHERE
sum.meta_key = 'sum' AND
count.meta_key = 'count' AND
sum.meta_value / count.meta_value >= 4"
);
}
}
我不完全确定如何在上面构建我的自定义查询。任何建议将不胜感激。