この記事は公開から1年以上経過しており、内容が古くなっている可能性があります。
バージョンによるバグらしいけど、一応メモ。
「カスタムフィールドテンプレート」で
[test_field]
type=checkbox
value=true
のようなフィールドを追加し、次にテンプレートのquery_postsで
$query = array( array( 'key' => 'test_field', 'value' => 'true', 'compare' => '!=', 'type' => 'CHAR' ) ) );
こんな感じの条件文(つまりtest_filedにチェックが入ってない場合)を書いたところ、一向にヒットしませんでした。
もちろん、チェックが入っていない記事は存在します。
逆に
$query = array( array( 'key' => 'test_field', 'value' => 'true', 'compare' => '=', 'type' => 'CHAR' ) ) );
だと、チェックが入っている記事がちゃんと表示されました。
どうもvalueが空状態だと条件にヒットしなくなるバグが3.1のころにあったみたいです。
それは3.2で正常に戻ったそうなんですが、自分が使っているのは3.4.2・・・
バグ復活といったところでしょうか。
解決方法につきましては、以下のサイトで紹介されておりました。
WordPress3.1系:meta_queryでvalueが空の時の対処法 | ライ麦畑でつかまえられて、思わず出たオナラが案外フローラルだった感動を貴方にも。
他にもラジオボタンやプルダウンにして、絶対に値が入るようにするなどの方法を取るという手もあります。(自分はソースを変えるのが面倒だったので、この方法で回避しました。)
コメント