web-dev-qa-db-fra.com

Envoi WP publications sur une API externe

Quelle est la meilleure méthode pour envoyer toutes les nouvelles publications Wordpress à un script externe sur un autre serveur?

Il doit inclure les informations complètes sur la publication, y compris le contenu de la publication, de sorte qu'un simple ping ne suffit pas.

J'ai examiné le fonctionnement des plugins Wordpress (sans aucune expérience antérieure) et les actions publish_post et edit_post semblaient aller dans la bonne direction, mais j'ai rencontré quelques problèmes avec le fait que les données envoyées n'étaient pas à jour, par exemple. edit_post envoie un post_id J'utilise get_post () et les données fournies sont les anciennes.

L’autre problème relativement important est qu’il faudrait probablement utiliser CURL pour envoyer la publication au serveur externe, auquel tous les sites n’auront pas accès.

La seule autre solution à laquelle je puisse penser est d’attacher une fonction à wp_init () pour intercepter toute requête provenant de mon serveur. Pour clarifier cela, mon serveur demanderait l’index WP avec un agent utilisateur personnalisé tel que "mysite/1.0". Si cet agent utilisateur personnalisé est détecté, le plug-in génère lui-même un élément, puis se ferme, empêchant ainsi la sortie standard WP.

De cette façon, je pourrais utiliser le service de ping intégré pour envoyer une requête ping à mon serveur à partir de wordpress, obtenir le permalien de cette requête, puis renvoyer une demande à WP qui sera interceptée par mon plug-in et affichera la publication au format json. .

Cela vous semble-t-il faisable?

Existe-t-il une autre méthode couramment utilisée pour envoyer un message entier à un script externe dont je ne suis pas au courant?

Je ne connais que très peu Wordpress et ne l'utilise pas vraiment moi-même, mais des personnes qui l'utilisent me demandent comment importer leur contenu automatiquement sur mon site. Je lui ai donc dit que je créerais un plugin pour le faire :)

1
John Mellor

Je pense que la meilleure façon de le gérer serait de laisser l’autre site gratter le fil pour le contenu. Alternativement, vous pouvez appeler une API sur le serveur de réception à chaque exécution du hook publish_posts, mais cela vous laisserait avec le problème de ne pas pouvoir éditer simultanément. Une autre solution consiste à autoriser votre serveur à interroger la base de données WordPress et à extraire les données dont vous avez besoin de la table posts.

2
mor7ifer