web-dev-qa-db-fra.com

Comment ajouter une add_rewrite_rule sans redirection?

J'ai un type de message personnalisé appelé "emplacements".

J'ai un lieu appelé "starbucks". Je peux voir cela en allant à "/ location/starbucks".

J'aimerais ajouter "coffee-shop" à l'URL, de sorte que le chemin "/ location/coffee-shop/starbucks" chargera la page "starbucks" tout en conservant l'URL dans le navigateur.

j'ai ajouté ce code à mon functions.php

function add_rewrite_rules()
{
    add_rewrite_rule('^location/([^/]*)/([^/]*)/?','index.php?pagename=$matches[2]','top');
}

add_action('init', 'add_rewrite_rules');

Qui charge correctement la page "starbucks", mais change l'URL en "/ location/starbucks".

Comment puis-je charger la page "starbucks" et conserver mon URL personnalisée?

2
Corey

Dans votre règle de réécriture, pagename devrait en fait être le query_var de votre type de publication personnalisé. Sauf si vous avez utilisé query_var => 'something_else' dans vos arguments register_post_type, ce sera le même nom que votre type de publication personnalisé:

index.php?locations=$matches[2]
3
TheDeadMedic