advanced custom fieldsでカスタムフィールドを登録し、登録内容によって出力内容を変えるページを作成。
wp_queryでカスタムフィールド「カテゴリー」の値ごとに処理をする以下のコードを書いた。
$args = array(
'posts_per_page' => 1,
'post_type' => 'page',
'post_parent' => $parentID,
'meta_query' => array(
'relation' => 'AND',
array(
'key'=>'_wp_page_template',
'value'=>'page-product.php',
),
array(
'key' => 'category',
'value' => array('cat1','cat2'),
'type' => 'CHAR',
'compare' => 'IN'
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
}
wp_reset_postdata();
}
一見問題ないように見えるけど、meta_queryの「category」のkeyの絞り込みの挙動がおかしい。
functions.phpにて関数化したせいかしら。とか、配列じゃなくしたら動くかしら。とか、ウンウンと1時間ほど格闘してしまった。
やり方を一から確認して、一字一句見直しもしたけど原因がわからず、、ちょっとキレそうになっていたその時、
https://teratail.com/questions/270575
調べて最初の方に見た記事に気になる一文を確認。
変数名とデータの組み合わせ合っていますか?もしくはuserという変数名を他でも使っていないですか?
https://teratail.com/questions/270575
そういえば、keyの名前汎用的すぎるよな、、と、藁にもすがる思いでカスタムフィールドの名前を「cf_category」に変更してみたところ、
な、、なおった、、、、!
教訓:フィールド名はめんどくさがらずユニークな名前にしよう。
エンジニア的には当たり前のことかもしれないけど、WordPressをいじっている非エンジニアの方の参考になれば幸い。