web-dev-qa-db-de.com

Schreiben Sie die Seite mit einem Slug vor dem Seitennamen neu

Ich verwende $ wp_rewrite-> non_wp_rules

Ich habe den folgenden Code, der funktioniert:

'name/(.*)' => 'index.php?post_type=post';

Ich kann eine URL wie http://meinesite.com/custom_name/post_name verwenden

wie kann ich mit $ wp_rewrite-> non_wp_rules dafür sorgen, dass Seiten genauso funktionieren?.

Dies ist nur ein Beispiel:

'anothername/(.*)' => 'index.php?post_type=page'; //for all pages

'anothername/(.*)' => 'page/pagename' //for one specific page

Gibt es eine Möglichkeit, eine Seite so aussehen zu lassen:

 http://mysite/custom_name/page_name.

Die beiden obigen Beispiele leiten mich einfach weiter zu:

http://mysite/page_name  //without the slug
2
Alex Pena

Ich habe keine externen Regeln ausprobiert, aber Sie können dies mit einem internen Rewrite und pagename erreichen:

function wpd_page_rewrite(){
    add_rewrite_rule(
        '^anothername/([^/]*)/?',
        'index.php?pagename=$matches[1]',
        'top'
    );
}
add_action( 'init', 'wpd_page_rewrite' );

Für übergeordnete/untergeordnete Seiten müssen Sie pagename auf den übergeordneten/untergeordneten Pfad page/pagename festlegen, oder Sie können auch page_id verwenden und die ID der Seite verwenden.

BEARBEITEN - Beachten Sie, dass Sie die Regeln neu schreiben müssen nachdem Sie neue hinzugefügt haben. Eine schnelle Möglichkeit, dies während des Testens zu tun, ist der Besuch der Seite mit den Einstellungen für Permalinks.

0
Milo