web-dev-qa-db-ja.com

ページ付け付きカスタムパーマリンク

news というカスタム投稿タイプがあり、currentoldニュース投稿を区別するために、クライアントがニュース投稿を '_としてマークできるカスタムフィールドがあります。アーカイブ '。

だから私のパーマリンクの書き換えコードはこのようになります:

function custom_rewrite_rule() {
    add_rewrite_rule('^news/archive/?','index.php?post_type=news‌​&news_archive=true',‌​'top'); 
    add_rewrite_rule('^news/archive/page/([0-9]+)?/?$','index.php?post_type=news&news_archive=true&paged=$matches[1]','top');   
}
add_action('init', 'custom_rewrite_rule', 10, 0);

function add_query_vars_filter( $vars ){
    $vars[] = "news_archive";
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

最初のビットは動作しますが、問題はページネーションにあります。news_archivequery_varにはアクセスできますが、pagedquery_varにはアクセスできません。

このパーマリンクの書き換えにpagedを組み込む正しい方法は何ですか?

3
juliusbangert

問題は、あなたの最初のルールがnews/archive/で始まるものをすべてキャプチャーすることです。

only $に一致するようにnews/archive/アンカーを追加します。

add_rewrite_rule(
    '^news/archive/?$',
    'index.php?post_type=news&news_archive=true',
    'top'
);

パーマリンクは、パーマリンクをフラッシュした後はそのまま機能し始めます。

2
Milo