J'ai un blog avec plusieurs pages dans une catégorie "projets" qui sont structurées / nommées comme ceci:
- / projets / projet-2012
- / projets / projet-2013
- / projets / projet-2014
- / projets / projet-2015
Lorsqu'un utilisateur entre des URL comme http://myblog.com/project ou même http://myblog.com/proje, il est redirigé vers la page / projects / project-2012 . (Avec un 301 déplacé en permanence!)
Bien que je souhaite que wordpress transforme les URL, ce qui donne une page clairement définie (par exemple, http://myblog.com/?p=123 ) en forme canonique, je souhaite désactiver uniquement la saisie automatique d'URL pour les URL "peu claires" qui peut pointer vers plusieurs pages.
Ma question est: comment puis-je y parvenir?
J'ai aussi fait quelques recherches ...
La réponse acceptée à la question Disable Wordpress URL auto complete désactive tout le système d'URL canonique. Ce n'est pas acceptable pour moi.
Il y a environ quatre ans, quelque chose comme ça est apparu sur le traqueur de bogues Wordpress: https://core.trac.wordpress.org/ticket/8948 Alors que de bonnes solutions (comme offrir une page "Nous n'avons pas trouvé votre URL. Mais étiez-vous vous cherchez peut-être une des pages suivantes? ") ont été discutées là-bas, le ticket a finalement été fermé.
EDIT: Il y a en fait un nouveau billet à https://core.trac.wordpress.org/ticket/16557 qui couvre exactement ce dont j'ai besoin. Il semble être ciblé pour la version 4.0. Et les commentaires de ticket contiennent également une solution (voir ci-dessous).
Réponses:
D'accord, après avoir cherché un peu plus, j'ai finalement trouvé une réponse à ma propre question cachée dans un commentaire de ce ticket de demande de fonctionnalité: https://core.trac.wordpress.org/ticket/16557 L'utilisateur nacin a suggéré d'utiliser ce code:
Si vous ajoutez ceci à un nouveau fichier php de plugin (par exemple dans wp-content / plugins / disable-url-autocorrect-guessing.php), vous aurez un joli plugin que vous pouvez activer pour désactiver la fonction de "devinette" de correction automatique de Wordpress .
Afin de vous éviter les ennuis, j'ai fait cela et remis mon plugin sur Wordpress.org. Une fois qu'il y aura été examiné, vous devriez pouvoir le télécharger ici: https://wordpress.org/plugins/disable-url-autocorrect-guessing/
Bien qu'il s'agisse d'une solution de travail, le code suggéré est en quelque sorte un hack. Une fois que la demande de fonctionnalité dans https://core.trac.wordpress.org/ticket/16557 est réellement implémentée, il y aura de bien meilleures solutions pour cela ainsi qu'un bien meilleur contrôle sur la façon dont la devinette doit être effectuée.
la source
remove_filter()
. Mais maintenant en contournant uniquement les cas spécifiques où j'ai des problèmes. Juste au cas où quelqu'un s'intéresserait à mon problème: wordpress.stackexchange.com/questions/307670/…Malheureusement
redirect_canonical()
400 lignes de code (et continue de croître de version en version), ce qui n'est pas particulièrement structuré pour être contrôlé par le but. C'est tout ou rien qui ne peut pas être configuré de manière flexible.D'un point de vue pratique, vos meilleures options sont:
template_redirect
.redirect_canonical
Il n'est pas souhaitable d' empêcher la redirection en tant que hook si la cible qu'elle a créée.Dans les deux cas, vous devrez développer la logique de ce qui rend exactement la redirection indésirable.
la source
redirect_guess_404_permalink()
et ne fait pas une telle distinction, prend simplement la première correspondance que SQL produit :(