ワードプレスで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 ワードプレスのテーマやプラグインのカスタマイズ作成のご依頼・ご相談はワードプレスドクターまでお気軽にお送りください