わかりました、私はこの質問に対するほとんどすべての答えを読み終えました、しかし私の状況はどういうわけかユニークでなければなりません。
私がやろうとしていることは理論的には簡単です。
CPTを登録するときに、次のように設定しました。
'rewrite' => array(
'slug' => 'resources/%resource_type%',
'with_front' => false
),
標準投稿はベースを使用しているので'with_front' => false
。
example.com/resources
のテンプレートを含むpage-resources.php
のページもあります。
Tax1を登録するときに、次のように設定しました。
'rewrite' => array(
'slug' => 'resources',
'with_front' => false
)
resource_type
というwhite-papers
という用語があります。
これは私がexample.com/resources/white-papers/
を使った分類アーカイブページのためのtaxonomy-resource_type.php
のようなパーマリンクの最初の望ましい結果を生み出します。
これが、物事が巧妙になるところです。私がやろうとしているのは、2つ目の分類法(Tax2)を追加し、次のパーマリンクを持つ別のアーカイブページを作成することです。
example.com/resources/white-papers/enterprise
このアーカイブは、resource_type = white-papers
およびindustry = enterprise
の投稿のみを表示するという点で、フィルタ処理された種類のアーカイブです。
代わりに私は404
を得ます。
しかし、もし私がexample.com/index.php?post_type=resource&resource_type=white-papers&industry=enterprise
のクエリーでURLを試みるならば、私は私の希望のフィルターされたアーカイブページを得ます。
また、問題に関連しているかどうかはわかりませんが、この機能を実行しています。
function resources_cpt_generating_rule($wp_rewrite) {
$rules = array();
$terms = get_terms( array(
'taxonomy' => 'resource_type',
'hide_empty' => false,
) );
$post_type = 'resource';
foreach ($terms as $term) {
$rules['resources/' . $term->slug . '/([^/]*)$'] = 'index.php?post_type=' . $post_type. '&resource_type=$matches[1]&name=$matches[1]';
}
// merge with global rules
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules', 'resources_cpt_generating_rule');
私が助けを必要としているのは、これを達成するための書き換え規則です。
任意の助けは大いに前もって高く評価されています!
それで、私は私が戻ってきて、それが他の誰かに役立つならば私自身の質問に答えたいと思った。
はじめに、CPT:
'query_var' => true,
'has_archive' => false,
'rewrite' => array(
'slug' => 'resources',
'with_front' => false
),
税1:
'query_vars' => true,
'rewrite' => array(
'slug' => 'resources/type',
'with_front' => false
)
税2:
'query_vars' => true,
'rewrite' => array(
'with_front' => false
)
書き換え:
add_rewrite_rule( '^resources/type/([^/]*)/industry/([^/]*)/?$', 'index.php?post_type=resources&resource_type=$matches[1]&industry=$matches[2]', 'top' );
これは私が最初に意図したものとはわずかに異なるURL構造を生成します、そしてそれはもう少し冗長ですが、私はそれが同様に機能すると思います。
example.com/resources
= page-resources.php
Tax1用語example.com/resources/type/white-papers
のtaxonomy-resource_type.php
= white-papers
。
example.com/resources/type/white-papers/industry/enterprise
=同じtaxonomy-resource_type.php
アーカイブテンプレート。ただし、Tax1とTax2のCPT結果のみを表示します。
これはまさに私が達成したいと思っていた機能です。