WordPress|ACFで「真/偽」の「偽」を取得するとき

  • 投稿日:
  • by
  • カテゴリ:

例えば、新着情報記事のうち、ピックアップニュースとして設定したものは「ピックアップニュース」の欄に表示し、一般ニュース欄には、それ以外のニュースを掲載しようとした場合、ACFで「真/偽」チェックボックスを使って切り分けすることができる。

今回は、途中から仕様変更でそのようにしたときのお話です。

ピックアップニュース欄には

'meta_key' => 'pickup_flag',
'meta_value' => true ,

として問題無く動作した。

一方で一般ニュースでは、ループの条件指定を

'meta_key' => 'pickup_flag',
'meta_value' => 0 ,

としたところ、古い記事が出てこない。過去の記事は改めて更新をかけないと、フィールド自体が存在しないためと思われる。

そこで、「フィールド自体が存在しない」条件を追加して

'meta_query' => array(
'relation' => 'OR',
array( // フィールドが存在しない(一度も保存されていない場合)
'key' => 'pickup_flag',
'compare' => 'NOT EXISTS',
),
array( // チェックされていない
'key' => 'pickup_flag',
'value' => 0 ,
'compare' => '=',
),
),

と、二つの条件をORでつないで解決!