最近给一个客户二次开发主题,需要加多条件筛选,其中有个筛选就是根据文章的某个post_meta值进行排序,一般的方法是:
1 |
$args = array( 'paged' => $paged ); $args['meta_key'] = 'favorites'; //这个就是post_meta $args['orderby'] = 'meta_value_num'; query_posts($args); |
但是以上代码有个问题,当文章没有此post_meta时,是不会显示出来的,这个很尴尬吧~那个解决方案如下:
1 |
$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); |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。