web-dev-qa-db-fra.com

Comment wordpress garde-t-il la trace de post id quand post id n'est pas utilisé dans les permaliens?

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/
6
AMB

Extension de la réponse { @Howdy_McGee }.

  1. Premièrement, vous ne pouvez pas avoir deux publications avec le même slug (pas de titre), ce qui a déjà été expliqué dans d'autres réponses.
  2. Deuxièmement, vous pouvez avoir une page et poster avec la même limace. Mais vous ne pourrez accéder qu’à la page lorsque votre structure de lien permanent est /%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.

7
Sumit

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.

6
Howdy_McGee

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.

2
cjbj