最近给一个客户二次开发主题,需要加多条件筛选,其中有个筛选就是根据文章的某个post_meta值进行排序,一般的方法是:

$args = array(
 \'paged\' => $paged
 );
 $args[\'meta_key\'] = \'favorites\'; //这个就是post_meta
 $args[\'orderby\'] = \'meta_value_num\';
 query_posts($args);

但是以上代码有个问题,当文章没有此post_meta时,是不会显示出来的,这个很尴尬吧~那个解决方案如下:

$args = array(
 \'paged\' => $paged
 );
 //$args[\'meta_key\'] = \'favorites\'; //这个就是post_meta
 $args[\'meta_query\'] = array();
 array_push($args[\'meta_query\'], array(
 \'relation\' => \'OR\',
 \'exist_clause\' => array(
 \'key\' => \'favorites\',
 \'compare\' => \'EXISTS\'
 ),
 \'not_exist_clause\' => array(
 \'key\' => \'favorites\',
 \'compare\' => \'NOT EXISTS\'
 ),
 ) );
 $args[\'orderby\'] = \'meta_value_num\';
 query_posts($args);

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注