J'ai une page personnalisée qui utilise un modèle appelé "Stores" http://example.com/stores/
. Cette page aura une liste d'états et/ou d'entreprises en tant que catégories. Pour ce système, j'ai un type de message personnalisé "magasin" qui peut être affecté à une seule catégorie (état ou société),
Chaque magasin n’est pas une page spécifique, mais des informations de contact qui sont affichées dans une sorte de disposition de style annuaire pour les États/sociétés.
Le problème que j'ai maintenant est, comment puis-je autoriser mon modèle "Stores" à accepter les demandes d'URL de http://example.com/stores/california/
(sans générer d'erreur 404)?
California
en ce sens n'est pas une page, mais une requête. Je ne veux pas non plus créer manuellement une page pour chacune de ces catégories (telle qu'elle est extraite de la base de données et automatique). Je pourrais utiliser ?state=california
à cette fin, mais j'aimerais savoir comment autoriser correctement cette URL dans WordPress.
Est-ce la bonne façon de modifier le fichier htaccess manuellement? Cela ne serait-il pas écrasé si vous modifiez la structure de lien permanent? Comment pourrais-je formater le htaccess?
Ajouter une nouvelle page et lui donner le slug stores
add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars){
$vars[] = 'state';
return $vars;
}
Cela dirigera votre demande sur votre page stores
.
add_rewrite_rule('^stores/([^/]*)/?','index.php?post_type=page&name=stores&state=$matches[1]','top');
Vous pouvez accéder à votre variable d'état comme suit:
$state = get_query_var('state');
Rendez-vous dans Paramètres-> Permaliens pour vider vos permaliens et ajouter votre règle de réécriture à la pile.
J'ai trouvé la réponse sur le site de Wordpress et j'ai testé la solution: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule#Using_Custom_Templates_with_custom_querystring
Créez un modèle de page pour les magasins et appliquez-le à une page.
$stores = get_query_var('stores');
Dans votre functions.php, ajoutez une balise de réécriture, qui indique à Wordpress de rechercher la balise spécifique.
function custom_rewrite_tag() {
add_rewrite_tag('%stores%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);
Maintenant, pour formater l’URL et le diriger vers le fichier index.php avec les variables, entrez les informations suivantes dans le fichier functions.php. Remarque: vous devez mettre à jour l'ID de page avec l'ID de page de la page des magasins (il s'agit de 12 dans cet exemple).
function custom_rewrite_rule() {
add_rewrite_rule('^stores/([^/]*)/?','index.php?page_id=12&stores=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);
À partir de là, vous pouvez naviguer vers/stores/south-dakota/et la variable $ stores de votre modèle de page sera "south-dakota".
J'essayais aussi de faire la même chose et je l'ai finalement fait de la manière suivante.
Ajoutez le code suivant à votre fichier functions.php dans votre thème.
add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars){
$vars[] = 'state';
return $vars;
}
add_rewrite_rule('^stores/([^/]+)/?$','index.php?pagename=stores&state=$matches[1]','top');
Dans votre modèle, obtenez la variable de requête en utilisant cette
$state = get_query_var('state');