最近给一个客户二次开发主题,需要加多条件筛选,其中有个筛选就是根据文章的某个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);
复制代码
|