Il y a peu de sites que j'ai vus qui n'utilisent pas post id dans leur structure de permalien. à cause de cela leur url devient.,
http://example.com/example-content/
alors que se passe-t-il lorsque l'utilisateur ajoute un nouveau message avec le même titre ou une même slug?
comment wordpress sait-il quelle publication afficher lorsque les deux publications ont la même adresse URL?
quel message est affiché quand l'utilisateur va sur le lien
http://example.com/example-content/
Extension de la réponse { @Howdy_McGee }.
/%postname%/
. Et il y a un débat en cours sur ce ticket # 13459 à propos de cette question/fonctionnalité depuis 6 ans: P.Lorsqu'une demande est faite, WordPress extrait l'URI de la demande et le met en correspondance avec la structure de lien permanent de la fonction parse_request()
. Si une correspondance est trouvée, alors query_vars
sont renseignés et cette information est transmise à la classe WP_Query
où le code SQL réel est préparé et exécuté pour afficher le résultat.
En cas de page S'il s'agit d'une page, WordPress utilise get_page_by_path
et récupère l'ID de la page à utiliser dans une requête SQL.
En cas de publication S'il s'agit d'une publication, WordPress utilise slug
of en SQL.
En bref, WordPress n’a pas besoin d’identifiant de post (pas dans la page) lorsque la structure de lien permanent est définie sur /%postname%/
, il utilise le slug de post pour interroger la base de données.
Par conséquent, avec le même slug de post/page, une page est affichée en premier car avec deux correspondances WP, vérifiez d'abord la demande de page.
Autant que je sache, vous ne pouvez pas avoir deux posts avec le même slug. Chaque fois que vous tentez de remplacer un message par un message existant par quelque chose qui existe déjà, WordPress ajoutera -2
au dernier message pour différencier les deux. Donc, si vous avez déjà un article avec le slug de test
et essayez de créer un autre article avec le même slug, WordPress donnera à la place ce slug test-2
.
En ce qui concerne la façon dont WordPress sait quelle publication recevoir ... Pendant le chargement, WordPress utilise le slug et exécute la fonction wp()
pour appeler un WP_Query()
sur le slug demandé. S'il existe, il remplit global $post
et affiche le contenu, sinon il redirige vers 404.
C'est ce que je comprends sur le chargement de WordPress. Peut-être que quelqu'un d'autre comprend mieux et plus en profondeur.
Chaque fois qu'une publication est sauvegardée, WP appelle la fonction wp_unique_post_slug
qui calculera un slug unique, basé sur le titre de la publication et un suffixe du type -2, si une autre publication a le même titre.
Cependant, vous pouvez filtrer cette fonction , pour générer votre propre slug. Donc, si vous voulez tout gâcher, c'est possible.