Avec, add_query_arg()
il est agréable d'ajouter des paramètres supplémentaires à une URL et il est également facile de créer une règle de réécriture. Jusqu'ici tout va bien. Mais le problème est le remplacement d'URL effectué par wordpress.
Quand j'ai une URL, comme:
www.mysite.com/?page_id=1&myvar=test
et je tape cette URL dans la ligne d'adresse du navigateur avec les permaliens activés. Ce lien deviendra:
www.example.com/pagename/?myvar=test
MAIS : ce que j'aimerais obtenir c'est:
www.example.com/pagename/test
Enfin, je voudrais utiliser du code comme:
<a href="<?php add_query_arg( 'myvar', 'test', get_permalink() ) ?>"> .... </a>
ce qui entraînerait:
www.example.com/pagename/test
Comment cela peut il etre accompli? J'ai passé des heures à lire des documents et je n'ai pas trouvé de solution.
permalinks
url-rewriting
urls
user3114592
la source
la source
Réponses:
Je viens de faire face à la même situation et suis tombé sur cette question en cherchant sur Google.
Il semble que ce ne soit pas possible. Le noyau lui-même ajoute simplement des chaînes à l'URL si de jolis permaliens sont activés, voir https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/link-template.php#L571
Pour toute personne intéressée par ceci: vous pouvez faire quelque chose comme ça dans votre code:
Cette solution est également recommandée par Jon Cave dans un commentaire sur le blog officiel de make: https://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/#comment-686
la source
WordPress ne vous laissera pas faire cela facilement. En fait, les règles de réécriture sont votre seule option pour réaliser ce type de chose dans WordPress et les règles de réécriture WordPress peuvent devenir très compliquées lorsque votre site se développe car les plugins et les thèmes (et vous aussi) peuvent ajouter des règles de réécriture personnalisées au-dessus des règles existantes dans votre (multi ) installation sur site.
La solution @swissspidy fonctionnera si vous avez déjà une règle de réécriture pour votre clé (myvar) et que vous utilisez des permaliens dans la première condition, puis que vous revenez aux chaînes de requête traditionnelles en l'absence de ces conditions. La solution @Johnathan Joosten montre comment les règles de réécriture peuvent devenir très très complexes dans WordPress (imaginez faire cela pour toutes vos clés et valeurs de chaîne de requête ...)
J'ai rencontré ce problème plusieurs fois auparavant en travaillant sur des projets de taille moyenne pour mes clients et j'ai pu réaliser quelque chose de similaire en utilisant un plugin appelé Obfusquer. Selon le site Web, il masque toutes les chaînes de requête WordPress avec des clés secrètes définies par l'utilisateur et fournit également des crochets pour les exigences personnalisées avancées.
Drôle, il n'est pas répertorié sur le référentiel de plugins WordPress, et je pense que vous aurez besoin d'un abonnement (ce qui je pense est vraiment abordable car 1 licence unique fonctionnera même dans une installation multisite) mais voici un lien vers celui-ci si vous avez besoin de masquer / cacher les chaînes de requête dans les installations WordPress. Ils ont également de la documentation ici .
J'utilise maintenant le plugin dans presque tous mes projets wordpress, j'espère qu'il répond à vos besoins. À votre santé.
la source
La solution Wordpress serait d'ajouter des règles de réécriture pour créer quelque chose comme ceci:
en savoir plus: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule
la source