ワードプレスでWP_Queryで特定のカスタムフィールドの値を持つカスタム投稿を取り出すには’meta_query’を利用します。
カスタムフィールドの値でカスタム投稿を取得するクエリ
下記のコードから、方法を見ていきます。
$query_posts = new WP_Query([ 'post_type' => 'カスタム投稿のスラグ', 'posts_per_page' => -1, 'meta_query' => [ 'relation' => 'AND', [ 'key' => '文字列が入っているカスタムフィールド', 'value' => '検索したい文字', 'type' => 'char', 'compare' => '=' //検索したい文字列とイコール ], [ 'key' => '数字が入っているカスタムフィールド', 'value' => array( 1,2,3 ), 'type' => 'numeric', 'compare' => 'IN' //valueで指定した数字のどれか ], ], 'orderby' => 'date', 'order' => 'DESC', ]); while ($query_posts->have_posts()) : $query_posts->the_post(); echo $post->ID; endwhile;
WP_Query はワードプレスの投稿を様々な条件でPHPプログラムで引き出す処理です。
‘post_type’ => で取得したいカスタム投稿タイプのスラグをしてします。
‘posts_per_page’ => は取得する数を指定します。ー1にすると無制限に投稿を取得します。
‘meta_query’ => [ ’relation’ => ‘AND’, この部分でカスタム投稿タイプのカスタムフィールドの値から検索します。’relation’ => ‘AND’を’relation’ => ‘OR’にすると、その後に続く複数の条件が「かつ」ではなく「もしくは」になります
カスタムフィールド値の条件を指定する部分は下記となります。
[
‘key’ => ‘文字列が入っているカスタムフィールド’,
‘value’ => ‘検索したい文字’,
‘type’ => ‘CHAR’,
‘compare’ => ‘=’
], ’key’ はカスタムフィールドのキー値になります。valueが検索したい文字列や数字、’type’にはカスタムフィールドの値のタイプ(文字列の場合char、数字の場合numericになります) ’compare’にはどのように比較したいのかを指定します。=にすると一登、!=にすると日一致、INにすると含むになります。
その他にも’compare’には下記のような値を指定することができます。
= != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS
'orderby' => 'date',は並び準をどうするか、'DESC'は降順、ASCにすると昇順になります。
最後にwhile ($query_posts->have_posts()) : $query_posts->the_post(); ループで取得した投稿を値を加工したりHTMLコードと組み合わせて出力します。
ご参考になりましたら幸いです。
WordPress ワードプレスのテーマやプラグインのカスタマイズ作成のご依頼・ご相談はWPドクターまでお気軽にお送りください