Comment afficher la barre latérale WordPress sur des sites Web autres que WordPress
Tout en travaillant sur mon dernier projet, DevGrow Discussions, je suis tombé sur la nécessité de intégrer toute ma barre latérale WordPress sur un site autre que WordPress - spécifiquement un forum bbPress. Étant donné que j'utilise divers widgets pour afficher des publications populaires et d'autres contenus dynamiques, il ne suffit pas de copier et coller le code HTML. Au final, il n’ya vraiment que deux façons de procéder:
- Incluez votre wp-load.php fichier dans votre application et chargez en fait l'intégralité de WordPress pour accéder aux fonctions du plugin
- Utilisez la mise en cache simple pour stocker la barre latérale au format HTML et l'inclure dans toute autre application, puis reconstruisez-la si nécessaire lorsqu'un nouveau contenu est publié.
Si ce n’est pas assez évident, la première option est très coûteuse en termes d’interrogation de base de données et peut considérablement ralentir votre site. La deuxième option nécessite un peu d’effort dans la mise en œuvre, mais en ce qui concerne les performances, il n’ya pas de concurrence.
Mise en cache de votre barre latérale WordPress
Avant de pouvoir écrire notre fonction, nous devons comprendre exactement ce que nous essayons de faire. Notre objectif est de mettre en cache notre barre latérale dans un fichier texte et mettre à jour ce cache chaque fois que nous publions un post, changer notre thème ou apporter des modifications aux widgets de la barre latérale. Puisque nous prévoyons d'utiliser notre cache pour afficher la barre latérale sur une application différente, nous devons pouvoir supprimer facilement le cache sans aucun effet néfaste (nous ne voulons pas que notre barre latérale soit cassée à aucun moment)..
Pour accomplir ceci efficacement, nous allons aussi créer un journal de nos fichiers en cache et l'utiliser pour déterminer si le cache doit être effacé. Si tel est le cas, le fichier de cache réel sera écrasé la prochaine fois que quelqu'un visitera le site WordPress, ce qui garantira le rendu correct de la barre latérale dans les deux applications..
Créer les fonctions
Pour commencer, ouvrez votre thème functions.php fichier et y ajouter les fonctions suivantes:
cache de fonction ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // Configurer les fichiers et les répertoires: $ cacheDir = TEMPLATEPATH. "/ Cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // Crée un répertoire cache s'il n'existe pas if (! Is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // Établit un journal des fichiers de cache avec leur statut actuel if (file_exists ($ cacheLogFile)) $ $LogLog = unserialize (file_get_contents ($ cacheLogFile)); else $ cacheLog = array (); if ($ task == 'start') // Si le cache existe, a moins de 6 heures et n'est pas dans la file d'attente de suppression, conservez-le - sinon reconstruisez le cache si (file_exists ($ cacheFileName) && (time () - filemtime ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false; else $cache = true; ob_start(); elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog)); function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ valeur) $ cacheLog [$ key] = 0; fichier_put_contents ($ cacheLogFile, serialize ($ cacheLog));
Ces première fonction, cache, est la clé pour que notre cache fonctionne. En fonction de l'endroit où vous l'appelez dans votre fichier, la fonction configurera les fichiers et les répertoires appropriés, vérifiera qu'un cache doit être créé et, le cas échéant, enregistrera la sortie et mettra à jour le journal de cache. La fonction utilise la mise en tampon de sortie de PHP pour enregistrer tout code HTML généré dans un fichier texte..
La deuxième fonction est utilisée pour purger tous les fichiers de cache et est utile pour ajouter des points d'ancrage WordPress existants. Grâce à lui, nous pouvons faire en sorte que notre cache soit effacé chaque fois que notre thème est mis à jour, une publication est enregistrée ou nos widgets de la barre latérale sont mis à jour en ajoutant le texte suivant à la fin de functions.php:
add_action ('switch_theme', 'cache_purge', 10); add_action ('publish_post', 'cache_purge', 10); add_filter ('widget_update_callback', 'cache_purge', 10);
Pour une liste complète des points d'ancrage, consultez la référence de l'API du plugin WordPress.
Configuration de votre barre latérale
Maintenant que les fonctions sont prêtes, vous pouvez commencer à mettre en cache votre barre latérale. Ouvrez votre sidebar.php et ajoutez cette ligne au début du fichier:
Cette fonction commencera à mettre en cache la barre latérale nécessaire, sinon elle ne fera rien. En raison du fonctionnement de la fonction de mise en mémoire tampon de sortie PHP, nous devons également fermer la mémoire tampon à la fin du fichier. Ajoutez cette ligne au bas du même fichier:
Après avoir ajouté ces deux lignes, actualisez votre blog. Vous ne verrez rien dans votre navigateur mais vérifiez la / cache répertoire dans votre dossier de thème et vous devriez voir deux fichiers commençant par cache-.
Utiliser votre cache
Maintenant que vous avez créé votre fichier cache, vous pouvez l’utiliser dans n’importe quelle application y ayant accès. Vous pouvez facilement le faire en utilisant le include_once mais j’aime aussi faire en sorte que le fichier existe, par sécurité:
Assurez-vous simplement de vérifier que le chemin du fichier est correct. Si vous souhaitez que votre cache soit supprimé d'une application externe, vous devez inclure le cache_purge fonctionne quelque part dans votre script et appelez-le simplement lorsque cela est nécessaire. Après cela, il suffit d'appeler la fonction:
Conclusion
Cette technique est très utile pour toute application PHP, en particulier lorsque vous souhaitez afficher du contenu dynamique sans sacrifier les performances. Utilisez-le pour accélérer votre installation WordPress ou utiliser des éléments utiles (comme la barre latérale) sur n’importe quel autre site Web ou application..
Note de l'éditeur: Cet article est écrit par Monjurul Dolon pour Hongkiat.com. Monjurul est un concepteur d'interface et développeur web basé à New York, travaillant en free lance dans la vie. Il blogue sur DevGrow.com, où il partage des astuces et des ressources sur le développement et la conception Web..