和其他许多人一样,我也遇到了同样的问题meta_key
出于排序目的,没有返回没有值的值。
我需要按照自定义(可排序的)拖放顺序进行排序,该顺序保存到自定义排序字段中,并且我需要所有未排序的都转到列表的底部。
因为我存储了一个数字,所以使用meta_value_num
用于自然分类1,2,10,12,20
而不是1,10,12,2,20
.
$args = array(
\'posts_per_page\' => -1,
\'post_status\' => \'publish\',
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'custom_sort\',
\'compare\' => \'EXISTS\'
),
array(
\'key\' => \'custom_sort\',
\'compare\' => \'NOT EXISTS\'
)
),
\'orderby\' => \'meta_value_num title\',
\'order\' => \'ASC\',
));
$query = new WP_Query($args);
注意:您可以嵌套整个meta\\u查询并查询更多内容,同时仍可以提取所有字段。
$args = array(
\'posts_per_page\' => -1,
\'post_status\' => \'publish\',
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'color\',
\'compare\' => =\'\',
\'value\' => \'red\'
)
array(
\'relation\' => \'OR\',
array(
\'key\' => \'custom_field\',
\'compare\' => \'EXISTS\'
),
array(
\'key\' => \'custom_field\',
\'compare\' => \'NOT EXISTS\'
)
)
),
\'orderby\' => \'meta_value_num title\',
\'order\' => \'ASC\',
));
$query = new WP_Query($args);
我相信从Wordpress 4.1开始,您不再需要添加
meta_key
按自定义字段排序时。(它在sql中为该字段添加一个左连接)。
对这个答案的评论引导我找到了我的解决方案。https://wordpress.stackexchange.com/a/126928/15209