ダリの雑記:WEBプログラム版

カスタムフィールドの値が空だと、meta_queryの条件に引っかからない【WordPress】

バージョンによるバグらしいけど、一応メモ。

「カスタムフィールドテンプレート」で

[test_field]
type=checkbox
value=true

のようなフィールドを追加し、次にテンプレートのquery_postsで

[PHP]
$query = array(
array(
'key' => 'test_field',
'value' => 'true',
'compare' => '!=',
'type' => 'CHAR'
)
)
);
[/PHP]

こんな感じの条件文(つまりtest_filedにチェックが入ってない場合)を書いたところ、一向にヒットしませんでした。
もちろん、チェックが入っていない記事は存在します。

逆に

[PHP]
$query = array(
array(
'key' => 'test_field',
'value' => 'true',
'compare' => '=',
'type' => 'CHAR'
)
)
);
[/PHP]

だと、チェックが入っている記事がちゃんと表示されました。

どうもvalueが空状態だと条件にヒットしなくなるバグが3.1のころにあったみたいです。
それは3.2で正常に戻ったそうなんですが、自分が使っているのは3.4.2・・・
バグ復活といったところでしょうか。

解決方法につきましては、以下のサイトで紹介されておりました。

WordPress3.1系:meta_queryでvalueが空の時の対処法 | ライ麦畑でつかまえられて、思わず出たオナラが案外フローラルだった感動を貴方にも。

他にもラジオボタンやプルダウンにして、絶対に値が入るようにするなどの方法を取るという手もあります。(自分はソースを変えるのが面倒だったので、この方法で回避しました。)

モバイルバージョンを終了