web-dev-qa-db-fra.com

Réécrire la page avec un slug avant le nom de la page

J'utilise $ wp_rewrite-> non_wp_rules

J'ai le code suivant qui fonctionne:

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

Je suis capable d'utiliser une URL du type http://mysite.com/nom_client/nom_post

avec $ wp_rewrite-> non_wp_rules, comment puis-je faire en sorte que les pages fonctionnent de la même manière.

C'est juste un exemple:

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

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

Existe-t-il un moyen de faire ressembler une page à ceci:

 http://mysite/custom_name/page_name.

Les deux exemples ci-dessus me redirigent simplement vers:

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

Je n'ai pas essayé de règles externes, mais vous pouvez y parvenir avec une réécriture interne et pagename:

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

Pour les pages parent/enfant, vous devez définir pagename sur le chemin parent/enfant, page/pagename, ou vous pouvez également utiliser page_id et utiliser l'ID de la page.

EDIT - notez que vous devez effacer les règles de réécriture après en avoir ajouté de nouvelles. un moyen rapide de le faire pendant les tests consiste à visiter la page des paramètres de permaliens.

0
Milo