この回答 は、タクソノミー用語に対してORの一致を返すクエリのコードを提供します。
global $ query_string; $ args ['tax_query'] =配列( array( '分類法' => 'status' 、 'terms' => array( 'available'、 'pending')// 2番目のクエリで "sold"に変更 、 'field' => 'slug' )、 );
単一の用語の場合と同じように、分類テンプレートを使用してURLから配列の用語値(、 'terms' => array( 'available'、 'pending'))を取得します。
重要なのは、関心のある特定の組み合わせに対してページテンプレートをハードコードしなくても、分類用語を時間の経過とともに変更できるようにすることです。そのため、より良い方法がある場合はそれを提案してください。
おかげで この記事 私は次のようにテンプレートファイルへのパーマリンクマッピングを持っています:
example.com/cptslugsは私のarchive-cptname.phpテンプレートにマップします。 example.com/cptslug/cpt-postは私のsingle-cptname.phpテンプレートにマップします。 example.com/cptslugs/ctxslug/termは私のtaxonomy-ctxname.phpテンプレートに対応しています。
私は何かが欲しいのですが:
example.com/cptslugs/ctxslug/term1/term2/
get_query_var( 'term')がURLから用語の配列(term1、term2)を返すように、taxonomy-ctxname.phpテンプレートにマッピングします。
しかし私が得ることができれば
example.com/cptslugs/ctxslug/?terms=term1,term2
get_query_var( 'term')がURLから項の配列(term1、term2)を返すように、おそらく書き換えルールとフィルタを介して、taxonomy-ctxname.phpテンプレートにマッピングします。これも問題ありません。
しかし、どちらにしても、テンプレートファイルは1つの用語を渡すか、一連の用語を渡すかにかかわらず動作するはずです。
UPDATE
わかりました - @scribuが助けに! - 多分。検索を続けて、これが私が見つけたものです。私はそれをすべて考え出したと思いました、しかし私はそれを働かせることができません。
?tax 1 = term 1、term 2&tax 2 = term 2 + term 3
にマップします。
query_posts(配列([.____。 '' tax 1 '=>' term 1、term 2 '、 ' tax 2 '=>' term 3 + term 4 ' ));
これはさらに次のものにマッピングされます。
query_posts(array( 'tax_query' => array( array( '分類法' => 'tax1'、 'field') => 'slug'、 'terms' =>配列( 'term1'、 'term2')、 'operator' => 'OR' )、[.____ 。[array( 'taxonomy' => 'tax2'、 'field' => 'slug'、 'terms' => array( 'term3'、 'term4 ')、 '演算子 '=>' AND ' )、 ));
example.com/?ctxname=term1,term2
フロントページのテンプレートをレンダリングします。 改訂:ctxnameのスペルが正しい場合はtaxonomy-ctxname.phpをレンダリングします。それをイメージングすること!
example.com/?cptslug/ctxslug=term1,term2
(分類法はcptslug/ctxslugのスラッグで登録されています)また、フロントページのテンプレートをレンダリングします。
example.com/cptslug/?ctxslug=term1+term2
archive-ctpname.phpテンプレートをレンダリングします。
Taxonomy-ctxname.phpまたはtaxonomy.phpテンプレートを表示するURLを取得する方法
それから、私がそれを得たら、かわいいURLの提案は大歓迎ですが絶対に必要というわけではありません。
UPDATE TWO
example.com/?ctxname=term1,term2
そして
example.com/ctpslugs/ctxslug/term1,term2/
両方ともtaxonomy-ctxname.phpを必要に応じてレンダリングします。以下に掲載されている私の回答の詳細を見てください。
追加後
print_r($ wp_query);
私のテンプレートと結果を調べると、機能するURL形式が見つかりました。私の質問で、カスタム分類名を正しくつづると、次の形式が機能しないこと、実際には機能することを書きました。
example.com/?ctxname=term1+term2
「+」および「、」演算子(それぞれANDおよびORを示す)を含むきれいなURLは、notURL-エンコードされました。
example.com/cptslugs/ctxslug/term1,term2/
次のWP_Tax_Queryオブジェクトを生成します
[tax_query] => WP_Tax_Queryオブジェクト ( [クエリ] =>配列 ( [0] =>配列 ( [分類] => announcements_cats [terms] =>配列 ( [0] => term1 [1] = > term2 ) [include_children] => 1 [field] => slug [operator] => IN ) [1] => Array ( [taxonomy] => category [terms] => Array ]( [0] => 1 ) [include_children] => [field] => term_id [operator] => NOT IN ) ) [関係] => AND )
ながら
example.com/cptslugs/ctxslug/term1+term2/
次のWP_Tax_Queryオブジェクトを生成します
[tax_query] => WP_Tax_Queryオブジェクト ( [クエリ] =>配列 ( [0] =>配列 ( [分類] => ctxname [terms] =>配列 ( [0] => term1 ) [include_children] => 1 [field] => slug [operator] => IN ) [1] => Array ( [taxonomy] => ctxname [terms] => Array ( [0] = > term2 ) [include_children] => 1 [.__ __。] [field] => slug [operator] => IN ) [2] => Array ( [分類] =>カテゴリ [用語] =>配列 ( [0] => 1 ) [include_children] => [field] => term_id [operator] => NOT IN ) ) [関係] => AND )
PS: これ: は「+」と「、」は「予約文字」であり、URIのパス、パラメーター、フラグメントで使用できますが、他の部分には表示されない場合がありますURI。結局は大丈夫だと思います。しかし、どういうわけか「間違っている」ようです。