web-dev-qa-db-fra.com

Permalien personnalisé avec pagination

J'ai un type de message personnalisé appelé news et afin de distinguer current et old news messages, j'ai un champ personnalisé dans lequel le client peut marquer un message comme " archivé '.

Donc, mon code de réécriture permalien ressemble à ceci:

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' );

Le premier bit fonctionne mais le problème vient de la pagination. Je peux accéder au news_archive query_var mais pas au paginé query_var.

Quelle est la bonne façon d’incorporer la radiomessagerie dans cette réécriture permanente?

3
juliusbangert

Le problème est que votre première règle capture tout ce qui commence par news/archive/.

Ajoutez l’ancre $ pour correspondre à uniquement news/archive/:

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

Votre règle de pagination commencera alors à fonctionner telle quelle après avoir supprimé les permaliens.

2
Milo