寒くなって、布団から抜け出すためのアイドリング時間が長くなってきている
制作部 川崎です。
WordPressで作成したサイトのメンテをしていると
新しくカスタムフィールドに日付項目を追加して、
今日より古いデータを取得したいというケースがたまにあると思います。
この時に、単純にmeta_queryに条件追加しても、思った通りにデータが取得できまないことがあります。
新しく項目を追加しても、既に投稿されているデータには追加した項目が存在していない為です。
(Wordpressのカスタムフィールドのデータの保存方法上仕方ないです。)
‘meta_query’ => array(
array(
‘key’ => ‘add_item’,
‘value’ => $today,
‘compare’ => ‘<‘,
‘type’ => ‘DATE’
)
)
確かに、これだと項目が存在しないデータはヒットしません。
全データを更新して、新しい項目に値を設定すれば何も問題ないんですけど・・・
修正対象になるデータが多いと大変です。
そんな時は、
とりあえず「NOT EXISTS」を条件に入れてあげれば、
項目自体が存在していないものが対象になるので、データは取得出来る様になります。
‘meta_query’ => array(
‘relation’=>’OR’,
array(
‘key’ => ‘new_item’,
‘compare’ => ‘NOT EXISTS’,
),
array(
‘key’ => ‘add_item’,
‘value’ => $today,
‘compare’ => ‘<‘,
‘type’ => ‘DATE’
)
)
これで
追加した項目が、当日より古いデータが全て取得できる様になります。