La mise en cache rend tout plus difficile. écrivez du Code et que et vos clients, collègues, etc. ne voyez aucun résultat, le problème est généralement la mise en cache. En fait, Carlton cite affectueusement: « il nrsquoy a que deux choses difficiles en informatique: lrsquoinvalidation du cache et le nommage. Défi: mise en cache de pages entières, il est donc logique que l’article de la semaine dernière sur l’écriture de cookies PHP dans WordPress ait un grand astérisque sur le cache. En particulier, la mise en cache de toute la page rend notre site rapide (crsquoest la mise en cache dynamique de notre super cache siteground préféré), ce qui signifie que même les cookies ne peuvent pas être récupérés.
Plus précisément, pouvez enregistrer de nouveaux cookies sur le serveur, mais les cookies $u de lrsquoobjet http ne reflètent pas ces changements parce que le serveur ne cherche pas les changements: il fournit une version mise en cache de la page entière, y compris le titre. Ceci est bien expliqué (et clarifié) dans cet article de Nick Davis. Par conséquent, après un commentaire confus (et troublant) sur jrsquoai dû désactiver dynamic page cache pour que la démo fonctionne correctement, ce qui, bien sûr, pourrait ne pas être possible sur les sites qui ont besoin drsquoun cache de page complet et de cookies. Tu nrsquoaurais pas dû choisir.
Solution: Ajax srsquoest avéré être une solution qui utilise Ajax. Ajax est un moyen de parler directement au serveur Web après le chargement de la page, puis de mettre à jour la page en utilisant les résultats de la conversation. Crsquoest exactement ce dont nous avons besoin pour contourner le cache de page entière, car notre problème est que les nouvelles informations de Cookie sont définies sur le serveur, mais lorsque
Bloquer la page. Par conséquent, nous allons creuser dans le serveur et utiliser Ajax pour obtenir cette information par nous mêmes. Présentation de la nourriture préférée au travail: envoyer
Il fonctionne de la même façon que la démonstration de la semaine dernière, mais il ne force pas les mises à jour de page. Utilisez le cache de page activé sur la page (cache dynamique sitegound). Notre solution ici est une description détaillée de l’article de Nick Davis et d’un article du moteur WP sur les cookies et la mise en cache WordPress. Nous utilisons également la Bibliothèque de cookies JS simple recommandée par Paul Underwood. souhaitez parcourir le code source complet, pouvez utiliser ce plug in sur github. Nous nrsquoen énumérons que quelques uns ci dessous.
Nous travaillons beaucoup moins sur PHP que la semaine dernière. Maintenant, nous allons faire trois choses: 1. Ajouter une opération drsquoajout de fichier javascript (
Appeler WP _ localize script () est notre méthode pour fournir des variables PHP aux fichiers JS. Dans notre exemple, nous devons faire quelque chose de commun: dire au script où la requête Ajax doit pointer. 2. Gérer la demande drsquoopération Ajax add U (
«) Fonctions wpshout _ get fave Food Cookie () {$Cookie = $post [lsquoCookie] echo $Cookie [$Cookie] Die} Ce code effectue le traitement côté serveur des requêtes Ajax. En drsquoautres termes, il recherche des membres spécifiques du tableau $u cookie. Nous définissons quel membre sera basé sur un message nommé
Une fois lrsquoélément $u Cookie restauré, ce code le renvoie au JS qui lrsquoa appelé en utilisant Echo et arrête lrsquoexécution. 3. Enregistrer le raccourci ajouter un raccourci (lsquoJS _ Cookie Demorsquo, lsquowpjcd show Cookie resultrsquo) Fonction wpjcd _ show Cookie Result () echo lsquo
lsquo Retourner Ob _ get Clean ()} Ajouter un raccourci (lsquoJS _ Cookie formrsquo, lsquowpjcd show Cookie formrsquo) Fonction wpjcd _ show Cookie form () {Ob Start ()? gt
Aliments préférés:
Présentation
lt? Php return Ob _ get Clean () Cette partie du Code est similaire à celle de la semaine dernière Inscrivez à deux courts codes wordpress pour voir notre module
JavaScript nous avons fait beaucoup de choses avec Javascript. Nous discuterons de deux des choses les plus importantes: Ajax request * Ajax request to get Current cookies despite the cache * $. Post (ajaxurl.url, {039action039: 039wpshout _ get fave Food Cookie,039, 039Cookie039: cookiename,}, Function (Response) {console.log (Response) fave = Response if (type of (fave) = 039underlined039) {$(039Current favorite039). Html (nofavetext)} Else {$(039. Current favorite039). Html (favetext + fave)}} C039est le point clé de la solution. Notre JS ne demande pas ce qui est stocké dans la page courante $_ Cookie, mais demande directement ajaxurl WordPress. Le résultat est que nous Récupérons les résultats non mis en cache du serveur.
Lorsqu039il obtient le résultat, il le publie sur la page comme contenu de l039élément dans la classe favorite actuelle. Encore une fois, si Ajax lui même n039est pas clair,