get_postsで全てのカスタムフィールドを検索対象にしたい。
-
ACFを利用してカスタムフィールドを多用し、サイトを作っています。
絞り込み検索は 絞り込み検索をプラグインを使わずに実装 を参考に自作の絞り込み検索機能を使用しています。「Search Everything」プラグインをインストールして「すべてのカスタムフィールドを検索:(metadata)」にチェックを入れたのですが、カスタムフィールドが検索対象にならず、フリーワードの検索スペースに入力した検索語句が検索できません。
また、プラグインを停止して最有効化したら何かが干渉して検索結果ページも自作のものが表示できなくなるなどの不具合が発生するようになってしまい、「Search Everything」は使うことができなくなりました。上記リンク先の方法で実装した絞り込み検索で、検索結果を取得する部分は
$search_post = get_posts( array( 'tax_query' => $taxquerysp, 's' => $s, 'posts_per_page' => -1, 'post_type' => 'hoge', //カスタム投稿タイプ「hoge」内から選択 'orderby' => 'meta_value', 'meta_key' => 'time_stamp', //カスタムフィールド「time_stamp」順で表示 'order' => 'desc' ) );
となっています。
この
get_posts
で検索対象を全てのカスタムフィールドの値(metadata)にすることはできますか?
自分で調べた限りではよくわからず頭の中がこんがらがってしまいました。フリーワードに入力した検索語句は
$s
に、
絞り込み検索用のチェックボックスの中身は$taxquerysp
に格納されています。$taxquerysp
の中身は下記のような感じのものが複数入っています。if($huga){ $taxquerysp[] = array( 'taxonomy' => 'huga', 'terms' => $huga, 'include_children'=> false, 'field' => 'slug', 'operator' => 'AND' //すべて合致した場合に取得 ); }
特定のカスタムフィールドを検索対象にする方法を全フィールド分記入するのでもとりあえずいいのですが、フィールドのキーの数が膨大な量になるので、できれば特に指定しなくてもすべてを対象にする方法がとれれば便利だなと考えています。
全てのカスタムフィールドを対象にする方法が無理ならば、特定のカスタムフィールドを検索対象にする方法を全フィールド分記入するやり方はどのようにすればいいかを教えていただけるととてもありがたいです。
こちらはなんとなくやり方はイメージできるのですが、できればモニターの前でうんうんと呻る時間を減らしたいです。
- トピック「get_postsで全てのカスタムフィールドを検索対象にしたい。」には新たに返信することはできません。