わかりました。3種類すべてのリクエストの実例があります。それらを機能させるためには、たくさんの実験といじくりが必要でした。Miloは、人々が自分の質問に答えるように導くのが得意だと思います。
数え切れないほどの変更とパーマリンクの更新を行った後、add_rewrite_urlの外のURLを把握する方がはるかに簡単であり、それらが機能したら、書き換えを定義することに気づきました。例index.php?param=foo&post_type=example_type
です。
別の明らかなことですが、ここに追加すると、他の人の役に立つかもしれません。ページ/サブページのワイルドカードルールを定義する前に、カスタム投稿タイプadd_rewrite_ruleルールを定義する必要があります。私はそれでかなりの時間を無駄にしました、そしてそれが私がルールがうまくいかなかった理由を私に理解させなかった主な原因であると思います。
これが私のすべてのニーズに対応する3つのルールです。ページ/サブページルールが1つに統合されました。
// Custom Post Archive
add_rewrite_rule(
'^foo/example_type/?$',
'index.php?param=foo&post_type=example_type',
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/example_type/([^/]*)/?$',
'index.php?param=foo&example_type=$matches[1]',
'top'
);
// Pages, Top-Level and Sub-Pages
// This MUST be placed in the code AFTER custom post add_rewrite_rule
add_rewrite_rule(
'^foo/(.+)/?$',
'index.php?param=foo&pagename=$matches[1]',
'top'
);
さらに、複数のカスタム投稿タイプのルールを追加するループを設定しました。ページ/サブページのワイルドカードルールを定義する前に、カスタム投稿タイプadd_rewrite_ruleルールを定義する必要があります。
$custom_types = array('example_type', 'projects', 'people');
foreach($custom_types as $type) {
// Custom Post Archive
add_rewrite_rule(
'^foo/'.$type.'/?$',
'index.php?param=foo&post_type='.$type,
'top'
);
// Custom Post Individual
add_rewrite_rule(
'^foo/'.$type.'/([^/]*)/?$',
'index.php?param=foo&'.$type.'=$matches[1]',
'top'
);
}
書き換えアナライザより良いWordpressのは、ページ/ポストのための照会方法を理解しようとするとミロが一緒に渡された、非常に役に立ちました。
page
だけでなく、ページだけでなく、投稿、カテゴリ、タグなどを意味するURL 階層内の親/子ページはどうですか?