カスタムフィールドの項目を降順・昇順で並び替えて表示。値がないものも表示させる
カスタムフィールドの項目を降順・昇順で並び替えて表示させるには以下のように実装。カスタムフィールドに値がないものも表示させるためにmeta_queryにはNOT EXISTSとEXISTSの両方を使用している
なぜかクエリにmeta_keyをsetするとNOT EXISTSが表示されないので、meta_keyはsetしていない
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } //ページ数取得 //metaクエリの検索配列を作成 $meta_query = array(); $meta_query['relation'] = 'OR'; $meta_query[] = array( 'key' => 'rate', 'compare' => 'NOT EXISTS', // 値がないものも検索範囲に含める 'value' => '' // なんか必要らしい ); $meta_query[] = array( 'key' => 'rate', 'compare' => 'EXISTS', //値があるものも検索範囲に含める ); //metaクエリの検索配列を作成終了 $args = array( 'post_type' => 'post', //投稿タイプはPOSTのみ 'cat' => 3463, //カテゴリ指定 //'meta_key' => 'rate', //NOT EXISTSとEXISTSを同居させる場合はこのmeta_keyがあるとうまく動作しないのでコメントアウト 'orderby' => 'meta_value', //並び替え要素 'order' => 'DESC',//昇順(ASC)は小さい順、降順(DESC)は大きい順 'paged' => $paged, //ページ数 'meta_query' => $meta_query, ); $wp_query = new WP_Query( $args );
参考URL:https://wordpress.stackexchange.com/questions/80303/query-all-posts-where-a-meta-key-does-not-exist