【发布时间】:2020-08-07 05:03:15
【问题描述】:
我已经在我的 WordPress 帖子中设置了名为“my_sort”的自定义元数据,它有一个像 1、2、3、4 这样的数值.....见下图:
我想按此元“my_sort”升序排序。这是我正在应用的以下代码:
<?php
$catPost = get_posts(array('category' => get_cat_ID($categories[0]->name), 'meta_key' => 'my_sort', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'numberposts' => 100)); //change this
?>
这段代码的问题是它可以工作,但有一个问题需要我解决。
它会留下所有其他没有“my_sort”元数据的帖子。我也想包括这些帖子。我要:
- 首先,具有“my_sort”的帖子必须按升序排列。
- 那么应该是没有“my_sort”元的帖子。
更新
当我尝试以下查询时。
$catPost = get_posts(
array (
'category' => get_cat_ID($categories[0]->name),
'numberposts' => 100,
'orderby' => 'meta_value_num',
'meta_type' => 'NUMERIC',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'OR',
array(
'key'=>'my_sort',
'compare' => 'EXISTS'
),
array(
'key'=>'my_sort',
'compare' => 'NOT EXISTS'
)
),
)
);
我没有得到正确的结果。查看显示结果的图像。
这里:
Record1:没有“my_sort”元数据。
Record2:确实有“my_sort”,它的值为 2。
Record3 : 没有“my_sort”元数据。
Record4:确实有“my_sort”元数据,它的值为 4。
这种情况下的结果应该是这样的:
Record2 然后 Record4 然后 Record1 然后 Record4 但显然情况并非如此。
怎么了?
【问题讨论】:
-
这能回答你的问题吗? Wordpress query - Order by meta-field value
-
@FluffyKitten 不,我没有使用 meta_query。
-
如果要按元键排序,则需要!
-
@FluffyKitten 在我的情况下没有可比性。只是升序。你能在方框里给我答案,以便我检查。
-
您能否将其从
get_posts更改为使用WP_Query,即$myquery = WP_Query( array ( ... );与所有相同的参数,除了将numberposts替换为posts_per_page。当你有这个工作时,你可以添加这个并让我们知道它打印出来的内容:echo $myquery->request;
标签: wordpress