web-dev-qa-db-fra.com

Comment les aperçus de projets WordPress sont-ils générés?

J'essaie de résoudre les aperçus de page dans WordPress. Je n'arrive pas à comprendre comment ils fonctionnent. Mais je sais:

  1. L'ID de prévisualisation et le nonce de prévisualisation identifient de manière unique la prévisualisation et indiquent d'où extraire les données de prévisualisation.

  2. Les données de prévisualisation ne sont pas extraites de la base de données car elle n'utilise pas les données stockées, mais les données saisies dans les champs de modification de page.

  3. Les données de prévisualisation ne sont pas stockées dans $_GET car les paramètres GET n'incluent pas toutes les données.

Les données d'aperçu sont-elles extraites de $_SESSION ou d'une autre partie de la base de données? Comment WordPress passe-t-il des champs de formulaire dans l'éditeur à la page de prévisualisation?

6
ΓΓIICK

Oui, celui-ci est un duplicata de ce post . Je vais fournir peu de mécanisme d'examen différent.

Vous utilisez wp cli export avant et après la prévisualisation de la publication asdf minimale.

wp export

Vous ne sauvegardez rien, vous venez de prévisualiser.

Assurez-vous de disposer d'un intervalle d'enregistrement super grand. define ('AUTOSAVE_INTERVAL', 1000000); L'intervalle par défaut est de 60 secondes.

Ensuite, vous utilisez l'outil de commande diff pour vérifier les deux fichiers xml. wp export renverra des fichiers XML.

diff *.xml

Je vais avoir l'idée qu'il s'agit d'un post (état brouillon) sans le titre avec le contenu de asdf.

> <item>
>   <title/>
>   <link>http://test100.com/?p=1705</link>
>   <pubDate>Mon, 30 Nov -0001 00:00:00 +0000</pubDate>
>   <dc:creator>admin</dc:creator>
>   <guid isPermaLink="false">http://test100.com/?p=1705</guid>
>   <description/>
>   <content:encoded><![CDATA[asdf]]></content:encoded>
>   <excerpt:encoded><![CDATA[]]></excerpt:encoded>
>   <wp:post_id>1705</wp:post_id>
>   <wp:post_date>2016-12-23 01:03:44</wp:post_date>
>   <wp:post_date_gmt>0000-00-00 00:00:00</wp:post_date_gmt>
>   <wp:comment_status>open</wp:comment_status>
>   <wp:ping_status>open</wp:ping_status>
>   <wp:post_name/>
>   <wp:status>draft</wp:status>
>   <wp:post_parent>0</wp:post_parent>
>   <wp:menu_order>0</wp:menu_order>
>   <wp:post_type>post</wp:post_type>
>   <wp:post_password/>
>   <wp:is_sticky>0</wp:is_sticky>
>   <category domain="category" nicename="uncategorized"><![CDATA[Uncategorized]]></category>
>   <wp:postmeta>
>     <wp:meta_key>_edit_last</wp:meta_key>
>     <wp:meta_value><![CDATA[1]]></wp:meta_value>
>   </wp:postmeta>
> </item>

Donc, juste pour l’aperçu, WordPress a créé le draft post. Dans notre cas, ?p=1705, signifie que l'identifiant de la publication sera 1705.

J'espère que vous aimez cette explication.

Dans WordPress, il n'y a pas de session PHP.

1
prosti