質問: 私はWordpressもphpも初心者で練習中です。 今は練習でサイトを作っています。 実装したいのは、 「キーワード、カテゴリ、タグ1、タグ2の3つの条件にAND条件でヒットする記事を表示する」 ためのsearchform.phpです。 初心者向けのサイトを見ながら、searchform.phpを以下のように記述しました。 ``` / * ◆追加◆ * / / * ◆変更◆ * / ▽タグ1を選択 name ); ?> / * ◆追加◆ * / / * ◆変更◆ * / ▽タグ2を選択 name ); ?> ``` 上記の記述でできた検索フォームですと、タグ1が検索結果に反映されません。 検索結果画面のURLを見ると、 > > ~~/?s=&cat=0&tag=tag1&tag=tag2 > > > のようになっており、カテゴリIDが0でタグにtag2を持つ記事が一覧表示されます。 期待しているのは、カテゴリIDが0、タグにtag1とtag2を持つ記事の一覧表示です。 末尾が tag=tag1+tag2 になれば私が求める結果が得られると考えていますが、実装方法がわかりません。 ご教授いただけますと幸いです。 宜しくお願い致します。
回答: 方針のみ回答させてください。 今の回答の流れですと、オリジナルのクエリが使えれば良さそうですね。 add_query_vars_filter()をfunction.phpに書くと、オリジナルのクエリ変数を使えるようになり、get_query_var()によってそのクエリの内容を取得できます。 ベタですが、tag1,tag2といった名前でフォームから送信できるようになります。 次に検索結果画面ですが、この方法で取得したクエリを元に、WP_Queryを使って検索を行います。 が、これは結構難しいので練習あるのみです!! 実現の方針としては、WP_Queryの引数にtax_queryを指定することで、カテゴリーやタグ、自分で作ったカスタムタクソノミーなどを検索条件に加えます。キーワード検索も勿論できます。 各タクソノミーをAND条件で検索するには、tax_queryのパラメータのうちrelationをANDにします。 上記リンクの「複数のカスタム分類の取り扱い:」のコードが参考になると思います。 tax_queryは多段にできるので全体はORで部分的にANDにするなど細かい検索ができます。 ちなみにタクソノミーが一つのみのときはrelationは指定できないので、タグが1つしか指定されないパターンがあるなら、tax_queryは1つの場合と2つの場合を用意する必要があります。 まずはタグ検索のみ練習、続いてタグとカテゴリー、最後にキーワードも含めたクエリ生成をするなど段階的にトライしてみてください。