目次
環境
- WordPress 5.2
手順など
AdvancedCustomFields(以下ACF)のbooleanの値でwp_query
をソートしようとしたら詰まった。
true/falseのカスタムフィールドで並べ替えして記事を出すのはほぼ無理っぽい。
要因は3つ。
wp_query
は、meta_key
で指定したもので絞り込みをする挙動になっている。基本的に、並べ替えに使うmeta_key
は、全部の記事に値がそろっているもの、という想定らしい。値がない記事(falseも含む)はクエリから外される。wp_query
でnull
とfalse
を区別する確実な方法は、あるとしてもたいそう面倒臭い。- 悪いことに、booleanのカスタムフィールドはnull とfalseを区別して入力する方法がない。
解決としては、booleanを使うのを諦めて、selectで処理することだ。
参考記事
- Querying posts with a false or NULL meta value — The Theme Foundry
- カスタムフィールドの値で絞り込みし、他のカスタムフィールドの値でソートする | style01
- Query all posts where a meta key does not exist - WordPress Development Stack Exchange
- Show All Posts with True on True/False Field - ACF Support
- 関数リファレンス/WP Query - WordPress Codex 日本語版