Dans mon dernier article pour Torque, je ai montré comment combiner plusieurs sources dans un billet de blog sur un site HTML statique en utilisant lrsquoAPI rest et JavaScript. Cette fois, je vais montrer comment faire quelque chose de similaire en utilisant PHP. Le dernier article a été écrit pour travailler sur nrsquoimporte quel type de site. Dans cet exemple, jrsquoa i utilisé un site HTML simple créé pour mon entreprise. Ensuite, j’utilise plusieurs sites wordpress pour trouver du contenu en utilisant l’api WordPress rest. Pour les combiner, jrsquoai utilisé JavaScript parce que ce côté nrsquoa pas utilisé un langage côté serveur comme PHP pour exécuter ou mettre en cache des requêtes.
Vous pouvez utiliser cette technologie pour les sites WordPress au lieu de créer un site en HTML, mais si prévoyez d’utiliser tous les sites WordPress, ou n’importe quel site avec CMS, avez plus de choix. Dans la démonstration Javascript, jrsquoutilise le stockage local pour mettre en cache les réponses dans le navigateur. Bien qursquoil fonctionne, il ne fournit pas de cache côté serveur. Le cache client que jrsquoai montré dans mon dernier article est utile, mais il exige toujours que chaque client récupère des données des trois sites utilisés comme source. Dans je vais montrer comment utiliser les sites WordPress comme connecteurs pour tous les autres sites, ce qui permettra aux sites d’envoyer et de mettre en cache toutes les requêtes vers d’autres sites.
Tout d’abord, un widget simple, j’utilise le site WordPress pour vendre des cours vidéo sur l’api de repos WordPress, une installation complètement différente de celle de mon site personnel. Il est situé sur un sous domaine du site principal, mais pour de nombreuses raisons, je n’utilise pas WordPress Multi sites. Lrsquoun des défis que jrsquoai rencontré était drsquoafficher des widgets de messages récents sur le site Web du cours. Il nrsquoy a pas de messages sur le site Web du cours, qui sont tous sur le site principal. Pour résoudre ce problème, j’ai créé une copie Widget du dernier post WordPress et j’ai remplacé
Ake u request ($page) {
$request = WP _ Remote get (ADD Query Arg (lsquopagersquo, (int) $page, $this gt URL))
(! Is _ WP Error ($Request) amp amp 200 = = WP Remote retrieve Response Code ($Request) {
$this gt posts [$page] = json _ decode (WP Remote retrieve Body ($Request)
}
}
* *
Restaurer le cache pour une journée
*
Fonction protégée set _ cache () {
(! Empty ($this gt publish) {
Set _ Transient ($this gt cache Key (), $this gt posts, day in seconds)
}
}
* *
Obtenir des messages mis en cache si possible
*
Get _ cache () {fonctions protégées
(est _ array ($posts = get Transient ($this gt cache Key ())) {
$this gt Post = $post
}
}
* *
Clé de cache de module basée sur lrsquoURL
* *
Chaîne de retour
*
Fonction protégée cache _ Key () {
Renvoie MD5 (PREG _ replace (
}
}
La partie la plus importante est la méthode Get _ posts (). Vérifiez si la page post existe déjà dans lrsquoattribut post de la classe. Puisque cette propriété est définie à partir du cache lors de lrsquoInstanciation drsquoune classe, elle devrait exister si la page a été demandée par cette classe le dernier jour.
ces messages ne sont pas dans ce projet, une demande est envoyée au site distant. Une fois la demande faite, le cache est mis à jour avec les nouvelles données ajoutées. Selon les besoins du site, voudrez peut être mettre en cache page par page. De plus, si savez que la mise en cache drsquoobjets persistants est utilisée sur le site, lrsquoutilisation de WP _ cache get () sur get Transfer () peut être un changement judicieux, en assurant simplement de changer les paramètres et de supprimer les fonctions pour correspondre. Ensuite, nous avons besoin drsquoune classe qui accepte un ou plusieurs objets créés par la classe Endpoint et qui fusionne et trie ses messages. Voici le programme:
Page = 1
}
* *
Ajouter un paramètre à cette collection
* *
Barre Standard
Vos besoins et la résolution de vos problèmes.
De plus, gardez à l’esprit que ce code ne dépend guère de WordPress. remplacez l’api http WordPress par guzzle ou requests et l’api temporaire WordPress par quelque chose comme PHP redis, pouvez créer un front end dans n’importe quel cadre PHP qui utilise un ou plusieurs sites WordPress comme CMS.
Comment combiner des messages de plusieurs sites WordPress en utilisant le plugin wordpress API rest