Consommer une API externe dans WordPress?


9

J'ai un client qui possède un site Web WordPress, et il souhaite l'étendre pour ajouter de nouvelles fonctionnalités. Ces fonctionnalités sont incluses dans un site Web que j'ai déjà fait (une sorte de moteur de recherche sur une base de données, avec quelques filtres), et qui fait l'objet de nouvelles améliorations.

Ce que je prévois de faire est de créer une api json de mon site Web (avec toutes les fonctions de recherche sur ma base de données), et de faire en sorte que le site WordPress consomme cette api, alors je n'aurai qu'à créer des vues pour afficher les résultats de la recherche.

Le problème est que je ne connais pas du tout WordPress (pour moi, c'est quelque chose où vous pouvez ajouter des articles via le panneau d'administration ...) et je ne sais pas comment nous pouvons y écrire notre propre code côté serveur. J'ai cherché sur Google et trouvé quelque chose appelé "plugin", mais je me demande s'il est possible de le faire, et si c'est la façon la plus simple de le faire car je n'ai pas besoin que le code soit utilisé par un autre tiers fête. S'il est possible de pirater une installation WordPress pour ajouter mes fichiers PHP, coder ce dont j'ai besoin (mes vues avec le même css WordPress) ce serait plus simple, mais je ne sais pas si c'est possible?


Que voulez-vous exactement faire, lire un flux json dans wordpress, insérer des données dans une base de données, publier via XML-RPC, essayer d'être plus clair.
Wyck

lire le flux json. par exemple, le site wordpress devrait contenir un formulaire de recherche, lors de la soumission, il effectuera un appel get vers une api, l'api retournera des objets dans json, et je devrais afficher ces résultats dans une page du site wordpress
tahir

1
@tahir J'essaie de faire exactement cela. Pourriez-vous éventuellement partager comment vous avez atteint votre objectif?
SAHM

Réponses:


9

Une brève introduction au développement de WordPress qui pourrait vous aider ou vous embrouiller:

La principale chose à garder à l'esprit: tout est juste PHP. Et aussi: ne modifiez pas les fichiers principaux de WordPress, car vous aurez des problèmes lorsque vous mettrez à jour vers une version plus récente plus tard. Le seul code que vous devez éditer est celui des plugins et des thèmes.

Si vous avez seulement besoin d'ajouter quelque chose à une page existante, il peut être utile de simplement modifier le bon fichier de thème. Cependant, si vous devez faire quelque chose de avancé (et ajouter une "vue" supplémentaire, comme à une URL spécifique, est plus avancé dans WordPress), vous devez ajouter le code à un endroit qui sera chargé plus tôt dans le processus de démarrage de WordPress .

La raison en est que WordPress fait toujours une requête de publication pour vous, en fonction de l'URL. Si vous y allez /category/banana/, il recherchera les publications de catégorie bananaet chargera le fichier de modèle correct où vous n'aurez qu'à le parcourir et à les afficher. Cependant, si vous y allez /custom-view/, WordPress ne trouvera probablement aucun message et ne chargera pas le modèle 404 - ce qui ne vous donne aucun moyen facile de récupérer!

Certaines personnes résolvent ce problème en créant des "pages de raccord": elles créent une page dans WordPress où le contenu n'est pas important, seul le modèle est là: elles y font ce qu'elles veulent faire de fantaisie. C'est hackish, mais ça marche. La meilleure façon serait de définir des règles de réécriture supplémentaires , qui permettent à WordPress de savoir qu'il /custom-view/s'agit d'une URL valide, mais que quelque chose d'autre devrait s'y produire.

Si vous voulez le faire, vous devez vous connecter au système WordPress principal. La partie importante ici est d' accroche , pas de modification . WordPress a des actions et des filtres . Une action n'est qu'une annonce ( "Hé, nous écrivons actuellement le <head>tag. Voulez-vous ajouter quelque chose aussi?" ). Un filtre vous permet de modifier une variable ( "Ceci est le titre du message. Si vous voulez le modifier, renvoyez une nouvelle valeur" ). Bien sûr, l'astuce consiste maintenant à savoir quelles actions et quels filtres utiliser. Cela dépend de la façon dont vous choisissez (pages de talon ou nouvelles règles de réécriture), donc je n'entrerai pas dans les détails ici.

Vous définissez les actions et les filtres que vous souhaitez utiliser dans un fichier plugin ou dans le fichier functions.php de votre thème. Ils sont spéciaux en ce qu'ils sont chargés pendant le démarrage de WordPress , donc avant l'exécution de la requête principale, etc. Un fichier de plugin est juste un fichier PHP, placé dans le wp-content/plugins/répertoire, avec un en-tête spécial pour que WordPress puisse lire son nom et l'afficher dans la zone d'administration où vous pouvez l'activer et le désactiver (vous pouvez donc laisser le plugin dans le répertoire mais temporairement désactiver).


2

Les bases

Vous devez contourner les bases des plugins et des thèmes. En bref: ce sont des ajouts aux fonctionnalités de base de wordpress. Normalement, les «plugins» concernent davantage la fonctionnalité et les «thèmes» la «vue». Vous voudrez peut-être aussi lire un peu sur "l'API du plugin" .

JSON

Vous voudrez peut-être utiliser le script json2 intégré au noyau pour fournir une API «sûre».

Exemple JSON

Le reste serait quelque chose comme ceci:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML Rpc

Le Codex a également quelque chose sur le "XML Rpc" .

API HTTP

Une autre possibilité pourrait être les requêtes http . Assurez-vous de lire les références au bas du lien.


Webhooks

Ceci est supplémentaire, car il s'agit davantage de donner une API consommable. Explication ici . Et il y a aussi un plugin nommé HookPress qui fait ce travail pour vous. Quelques diapositives de l'auteur également.


1

Je suppose que vous connaissez PHP? Ou c'est aussi une barrière?

Essentiellement, les plugins dans WordPress sont conventionnels pour empaqueter du code PHP afin qu'il soit reconnu et géré par le noyau WordPress. C'est le format plutôt que la fonctionnalité.

En ce qui concerne les fonctionnalités réelles, vous pouvez pratiquement exécuter PHP arbitrairement, mais il est recommandé d'utiliser les API de WP pour la compatibilité et la fiabilité.

Pensez à votre code dans le contexte de WP comme include(ce qu'il sera techniquement). À partir de là, c'est l'étendue de vos besoins et de vos ressources qui déterminera la quantité qui sera réécrite pour être spécifique à WordPress.


0

Oui c'est possible.

la plupart des plugins sont créés via ce que l'on appelle des hooks:

par exemple:

add_action("hook", "function")

il est assez facile de se construire un plugin une fois que vous savez comment fonctionne ce framework, eh bien ... fonctionne ... Je vous conseille de vous familiariser avec lui, l'endroit le plus étendu pour la connaissance (quoique, pas le plus organisé - comme php. net) est le codex wordpress .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.