J'écris un plugin pour WordPress qui génère dynamiquement le contenu d'un tableur Google Documents. Plus précisément, le plugin fournit un shortcode qui génère une belle liste de personnel. Cela fonctionne, mais il y a deux problèmes:
Je peux résoudre le premier problème avec un certain niveau de mise en cache, mais que puis-je faire à propos du second problème? Je mentionne le premier problème car je pense que la solution idéale est celle dans laquelle WordPress indexe la copie en cache de la page.
Une autre solution à laquelle je peux penser serait d’avoir le contenu de la page composé d’un plugin périodiquement. De cette façon, la page pourrait être recherchée et ne serait pas générée dynamiquement à chaque fois. Cependant, cela semble être un paradigme étrange pour un plugin de contrôler complètement le contenu d'une page ... existe-t-il d'autres plugins qui le font? En outre, cette approche expose l'utilisateur à une complexité qu'il ne devrait pas avoir à le faire. (Ils devraient éditer le contenu de la page à partir d'une page de plugin au lieu de l'endroit habituel.)
Voici un exemple de la partie du balisage de la page:
<h2>General Management</h2>
[staff-directory department="General Management"]
La feuille de calcul à consulter est configurée séparément. Le "département" spécifie la feuille de calcul. (Je vous montrerais à quoi ressemblent les résultats, mais je n'ai pas assez de représentant pour publier une image.)
Vos suggestions sont grandement appréciées.
La table wp_posts
a une colonne post_content_filtered
que les plugins peuvent utiliser pour mettre en cache des filtres de contenu de publication coûteux . L'idée est que lorsque vous affichez la page, vous ne lisez pas post_content
mais vous lisez post_content_filtered
. C'est bien, mais cela ne résoudra pas votre problème de recherche, car WordPress ne considère par défaut que post_content
et post_title
.
Vous pouvez toutefois le faire à l'inverse: stockez le contenu de l'éditeur dans post_content_filtered
et la page rendue dans post_content
(mettez-le à jour périodiquement avec un travail cron). Certains filtres sont appelés avant la publication du message. Vous pouvez les utiliser pour transmettre post_content_filtered
au lieu de post_content
à l'éditeur. Ainsi, l'utilisateur ne verra aucune différence, mais les performances et l'expérience de recherche seront améliorées.
Je vois deux façons
Si la vitesse est importante, la mise en cache résoudrait vos deux problèmes. Si vous pouvez en quelque sorte ajouter un horodatage de la dernière modification au cache et l'url/get de récupération des données, avec un simple algorithme de hachage, vous pouvez être sûr que la version mise en cache est à jour.
Si la rapidité n’est pas aussi pertinente, vous pouvez utiliser l’API pour demander la feuille de calcul. Par exemple, vous n’avez peut-être pas besoin de PHP, mais vous pouvez utiliser JavaScript et JSON pour une recherche très rapide, comme les données extraites dans cet exemple .
À votre place, je me contenterais de la mise en cache des données, en calculant si Google Docs n'est pas disponible au moment de la requête de recherche.