meta_queryでカスタムフィールドの絞り込みがうまく行かなかった時のメモ

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をいじっている非エンジニアの方の参考になれば幸い。