Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen news und um aktuelle und alte Beiträge zu unterscheiden, habe ich ein benutzerdefiniertes Feld, in dem der Kunde einen Beitrag als '_ markieren kann.archiviert '.
Mein Code zum Umschreiben von Permalinks sieht also so aus:
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' );
Das erste Bit funktioniert, aber das Problem liegt in der Paginierung. Ich kann auf dasnews_archivequery_var zugreifen, aber nicht auf daspagedquery_var.
Was ist der richtige Weg, um Seiten in dieses Umschreiben von Permalinks einzubeziehen?
Das Problem ist, dass Ihre erste Regel alles erfasst, was mit news/archive/
beginnt.
Fügen Sie den Anker $
hinzu, der mit only news/archive/
übereinstimmt:
add_rewrite_rule(
'^news/archive/?$',
'index.php?post_type=news&news_archive=true',
'top'
);
Ihre Paginierungsregel wird dann so funktionieren, wie sie ist, nachdem Sie die Permalinks gelöscht haben.