私はlocation
という名前のカスタム分類法を持っていて、それぞれの用語に 'news'や 'marketplace'のようなセクションを追加したいので、私のURLは/location/montreal/news/
のようになります
改ページを追加しようとするまでは完璧に動作します。これが私のコードです:
add_action( 'init', 'region_rewrite' );
function region_rewrite()
{
global $wp;
$wp->add_query_var( 'section' );
add_rewrite_rule(
'^location/([^/]*)/([^/]*)/page/([0-9]+)/?',
'index.php?location=$matches[1]§ion=$matches[2]&paged=$matches[3]',
'top'
);
add_rewrite_rule(
'^location/([^/]*)/([^/]*)/?',
'index.php?location=$matches[1]§ion=$matches[2]',
'top'
);
}
書き換えアナライザプラグインを使用しています query_varsの場所、セクション、およびページングに正しい値が割り当てられているようです。しかし、/location/montreal/news/page/2
のようなページURLにアクセスしようとすると404エラーが発生します。また、page
変数の値が/2
であることにも気付きました。 404が見つからないのはこのためです。
任意の助けは大歓迎です!
最初にチェックされるように、ページングされたadd_rewrite_url
lastを呼び出すだけでよいと思います。そうでなければ、ページングされていないバージョンが常に最初にマッチするので、ページングされたバージョンは決してマッチしません。引数から 'top'を削除してもうまくいくはずです。
また、カスタムリライトを扱う際に404をデバッグするのに良い方法についてはこのページをチェックしてください: http://www.dev4press.com/2012/tutorials/wordpress/practical/debug-wordpress-rewrite-rules-matching/
オリヴィエに感謝します。私自身の問題は、add_rewrite_urlがすべての投稿ではなくページに対して正常に機能していたことです。
パーマリンク設定で%postname%/
のみを使用している場合、投稿に対して機能しました。 /%category%/%postname%/
を使用している場合、つまり、http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on
がワードプレスの標準的な動作のために、http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on
への301リダイレクトを保持している場合、投稿URLの後にビットを失い続けました
以下の行はこの問題を止めました。
remove_filter('template_redirect', 'redirect_canonical');
コーデックスで提案されるべきだと思います。