【ちゃんと動いてなかったので訂正】pre_get_postsを使ったカスタムタクソノミーの複雑な条件検索

以前「pre_get_postsを使ったカスタムタクソノミーの複雑な条件検索」という記事を書きましたが、この記事のコードでは正常に動作していませんでした。。。

AD

カスタムタクソノミー定義時の注意

register_taxonomyのオプションで「query_var」というオプションをtrueに設定するように書いていましたが、falseの間違いでした。
trueとすることで「タクソノミー名=タクソノミーの値」という1対1の場合では問題ないですが、値が配列になると取れなくなります。

テンプレート(index.php,search.phpなど)に記述する内容

こちらは変更なしです。

functions.phpに記述するフィルターフック

まず「query_vars」というフィルターフックで自力でクエリを定義します。register_taxonomyの「name」で定義した名称を配列のかたちでいれます。
定義したタクソノミー全部を検索で使う場合はget_taxonomiesで入れたほうが手っ取り早いかもしれません。

あとのpre_get_postsへの処理の中では、配列の生成を+演算子ではだめだったりarray_mergeを使ったりという点が変わっています。

AD

Share

Commentsコメント

メールアドレスは公開されません。コメントは必ずご入力ください。

HTMLタグは使用できません。ソースコードを書き込みたい場合はCodetterGistCodePenなどのご利用が便利です。

匿名 さんより
こんにちは。
こちらはマルチサイトで使用することができますか?
検索を行っても表記はされるのですが、メインサイトのみしか表示されず色々と試行錯誤してみましたが、悩んでおります。