web-dev-qa-db-ja.com

URLまたはリンクから2つの分類法を問い合わせる

私はこれについて頭を悩ませており、回避策を作成していますが、これを理解できれば私のサイトの組織にとってははるかによいでしょう。

2つの分類法(一方はカスタム)にまたがって投稿をクエリできるようにしたいのですが、カスタムDBクエリを使用してカスタムテンプレートを作成する必要なく、これを自動的に行うことができればと思います。

私は「プラットフォーム」分類法を使い、通常の分類法で記事にラベルを付けることができるようにしたい(「レビュー」や「プレビュー」など)。

現時点では、カスタマイズされたWalkerを使用して、組み込みのMenuシステムを使用して特定のアーカイブページを指すメニューを生成できるようにしています。

私のURLはこんな感じです:

example.com/category/platforms/consoles-platforms/ps3+review/

これにより、プラットフォームのPS3部分および「レビュー」カテゴリの記事が検索されます。現在、これはすべて通常のワードプレスの「カテゴリ」分類法の下で行われています。

URLが次のようになるように、私はそれらを別々の分類法にしたいのです(「レビュー」は通常の「カテゴリー」税の一部で、次に「プラットフォーム」税になります)。

example.com/platforms/consoles/ps3/review

見栄えがよく、カテゴリをより厳密に整理しておくことができます。しかし、2つの分類法にまたがって自動的に照会するようにWordPressを設定する方法は、私の人生ではわかりません。

他の誰かがこれに反対していますか?

編集:Rarstのコメントに続いて、私は疑問に思う必要があります。私は自分のURL要件に野心的過ぎるのでしょうか? GETパラメータと1つのテンプレート(つまりexample.com?platform=ps3&type=review)を使用して、これを実行可能に設定できます。それは最も簡単な/最も堅牢な方法ですか?これを解決する方法について他に何か考えがありますか?

3
josh

category__andを使えばうまくいくと思います

私はあなたに似たようなアプローチを試みたのを覚えていて、私はプラットフォームまたはレビューあるいはその両方にあるコンテンツを手に入れることに気付いた。しかし、実際に投稿を取得するには、どちらか一方にのみ、そのうちの一方に含まれている投稿を除いて、これが私のアプローチでした。たぶんあなたがあなたの投稿を持っている方法はそのアプローチでうまくいくが、それは私のものではなかった(それはもっと都市/イベントのタイプ/イベントのコストに似ていた)。

とにかく、あなたはPOSTを通してあなたの要素の組み合わせを渡すことができます、そして次に受信ページでそれらの要素を配列に入れることができます:

$myFilteredArray = array();
if (isset($_POST['.... 
// Do what you need to get the POST variable elements
into the array

// and then, use this query format
query_posts( array(
            'category__and' => $myFilteredArray, 
            'orderby' => 'title',
            'posts_per_page'=>-1, 
            'order' => 'ASC')
            );   
1
Sergio Majluf