WP_Queryで「タイトルもしくはカスタムフィールドに一致したら」という条件で検索

WP_Queryでループの検索条件を文字列で絞り込むとき、だいたい以下のように書くと思います。

普通は’s’のところに、検索のための文字列を入れますよね。

ただ、これはデフォルトだとタイトルと投稿内容しか対象にならない。「カスタムフィールドも検索対象にしたいんじゃ!」ってこと、あると思います。

ここで’s’も’meta_query’も普通に使っちゃうと、AND検索になります。なので、例えば「東京駅」で検索かけたときに、カスタムフィールドには入ってるけどタイトルには入ってないから検索結果に出ないということになっちゃうんですよね。それじゃ困る。

「タイトルか、もしくはカスタムフィールドにあれば表示する」というOR検索にしたいわけです。

そんなときは、こうしましょう。

実装

以下コードをfunctions.phpに記述

そしてループの条件を以下のようにします。これは、カスタムフィールド「station」もしくはタイトルで、「東京駅」という単語でOR検索をかけるときの例。

これでヨシ!

以上、現場からでした。

フォローする