質問: wordpressの複数カテゴリ検索 数ヶ月から、私は複数のカテゴリー検索オプションのためにワードプレスを掘り下げて、そしてついにこれを思い付きました。wordpressでは複数のタグを使用できます。つまり、urlに次のように入力すると、http://yourblog.com/tag/tag1+tag2 それから、タグtag1 _と_ tag2を持つすべての投稿を返しますあなたがタイプするならhttp://yourblog.com/tag/tag1,tag2それからそれはtag1 _または_ tag2を持つすべての投稿を返すでしょう同じことが今もカテゴリのために働くhttp://yourblog.com/category/cat1+cat2とhttp://yourblog.com/category/cat1,cat2しかし、これはカテゴリとタグに対してのみ機能します。私は検索オプションに対してそれを試みています。今まで私はこのurlが機能している場所をコーディングしていました(つまり、カテゴリid 114のhtmlのみを検索します)。http://yourblog.com/?s=html&cat=114このurlでは、 コンマ区切り文字 は非常にうまく機能しますが、 + は機能しません。私が言うつもりですhttp://yourblog.com/?s=html&cat=114,115非常にうまくいきますがhttp://yourblog.com/?s=html&cat=114+115動作しません。誰かがこれを手伝ってくれる?私は本当にこれを機能させたいまだ待っています
回答: 問題は、url内の '+'記号はスペースと同じで、phpがそれを見る方法です。parse_requestに対してアクションを使用すると、このように動作させることができます。add_action( 'parse_request', 'category_search_logic', 11 ); function category_search_logic( $query ) { if ( ! isset( $query->query_vars[ 'cat' ] ) ) return $query; // split cat query on a space to get ids separated by '+' in url $cats = explode( ' ', $query->query_vars[ 'cat' ] ); if ( count( $cats ) > 1 ) { unset( $query->query_vars[ 'cat' ] ); $query->query_vars[ 'category__and' ] = $cats; } return $query; } 上の例では、phpが$ _getパラメータで見るものであるスペースでそれらを分割することによってそれらの間に '+'で渡されたカテゴリidを取得します。配列内に複数の項目がある場合、それは 'and'スタイルの検索である必要があります。そのため、指定したすべてのカテゴリの投稿を返す'category__and'クエリ変数に配列を分割して渡すことができます。