wordpress - 在 WP_Query 中按帖子元排序帖子时,仅返回具有元值的帖子
问题描述
我需要按评级对帖子进行排序。这段代码做得很好:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array (
'post_type' => 'brands',
'posts_per_page' => 6,
'meta_key' => 'post_average_rating',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'paged' => $paged
);
$brands = new WP_Query( $args );
?>
但有一个问题。如果帖子没有评分值,则根本不会出现。如您所见,我需要在页面上显示六个帖子。但如果所有帖子都只有三个评分,则只会显示三个。我也想显示没有评分的帖子。请告诉我如何解决这个问题?
解决方案
感谢 FluffyKitten 的评论找到了解决方案。这是代码:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array (
'post_type' => 'brands',
'posts_per_page' => 6,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_query' => array(
'relation' => 'OR',
array(
'key'=>'post_average_rating',
'compare' => 'EXISTS'
),
array(
'key'=>'post_average_rating',
'compare' => 'NOT EXISTS'
)
),
'paged' => $paged
);
$brands = new WP_Query( $args );
?>
现在,有评分的帖子首先显示,从高到低排序,没有评分的帖子仅显示在它们之后。
参考: Orderby 元值仅返回wordpress.stackexchange.com 上具有现有元键的帖子
推荐阅读
- python-3.x - 如何在顶层窗口中引入图像按钮?
- javascript - Material-UI:未捕获 RangeError:超出最大调用堆栈大小
- javascript - 如何使用 Javascript 更改 WebView 的 URL?
- javascript - 正在跳过使用 JQuery/Javascript 设置 div 样式
- redis - Redis 占用太多内存
- docker - Docker 无法访问 .local 域
- daml - 如何提取党的名称?
- javascript - 隐藏带有文本内容的 tr(表格行)
- c++11 - 余数()在 if 语句 C++ 中不起作用
- python - 有没有办法让文件夹中的所有工作表,包括所有子文件夹?(在智能表中)