web-dev-qa-db-fra.com

Architecture de mécanisme post-aperçu

J'essaie de trouver comment WordPress traite les avant-premières avant de les publier.

J'entre dans le mode de modification d'un message que je souhaite modifier, je modifie des éléments, appuie sur Aperçu et l'aperçu s'affiche avec les modifications.

Mes questions sont:

  1. Le post de prévisualisation est-il rendu et routé de la même manière que le live?
  2. Si tel est le cas, WordPress enregistre-t-il une autre entité de cette publication dans la base de données, qui se présente comme la publication d'origine mais avec les modifications et cette entité est rendue?
6
Dima Gimburg

Même si vous appuyez sur un seul bouton pour "Aperçu", il peut se terminer par 2 "itinéraires" différents.

L'un est quelque chose comme

http://example.com/postname/?preview=true

La seconde est quelque chose comme:

http://example.com/postname/?preview_id=152&preview_nonce=xxx&preview=true

si le premier contient l'argument de requête preview, le second contient

  • preview_id
  • preview_nonce
  • preview

arguments de requête.

L'argument de requête preview indique à WordPress d'autoriser la visualisation des publications non publiées aux utilisateurs disposant des capacités appropriées.

Si vous avez un message enregistré en tant que "brouillon" et que vous êtes connecté, vous pouvez le visualiser en mode frontal comme s'il avait été publié, en ajoutant simplement ?preview=true à l'URL du message.

Le deuxième type d’URL est attachment pour prévisualiser le bouton via javascript lorsqu’une sauvegarde automatique post est exécutée.

Une sauvegarde automatique enregistre la publication telle quelle (y compris toute modification) dans la table posts, mais remplace le type de publication actuel par le type "revision".

Trouvez plus d'informations ici .

L'enregistrement automatique s'exécute à intervalles réguliers sur le backend, mais également lorsque vous cliquez sur le bouton "Aperçu". Ainsi, dans l'écran de prévisualisation, vous voyez toujours les dernières modifications.

C'est ce qui se passe:

  1. Vous cliquez sur le bouton "Aperçu"
  2. WordPress enregistre la publication actuelle dans la table des publications en tant que révision
  3. Une page de navigateur avec les arguments post url et preview_id, preview_nonce et preview est ouverte
  4. WordPress extrait l'objet post de la table posts
  5. En raison de l’argument de la requête preview, WordPress
    1. Vérifie que l'utilisateur actuel est connecté et dispose des fonctionnalités appropriées
    2. Vérifie le nonce
    3. Si les vérifications précédentes réussissent, WordPress extrait la dernière révision de publication de la base de données, s'assurant que le nom de publication de révision et l'auteur de publication correspondent au nom de publication et à l'auteur de l'objet de publication extrait au point 4
    4. Si une révision valide est trouvée, l'objet post tiré du point 4 est remplacé par l'objet post de révision

En plus de cela, un aperçu est traité de la même manière que la demande frontale normale pour une publication sigulaire, mais une fois que l'objet de publication utilisé pour afficher la page est extrait de la ligne de la base de révision, vous voyez les dernières modifications de publication, même non enregistrées. .

6
gmazzap