web-dev-qa-db-fra.com

Consommer une API externe dans WordPress?

J'ai un client qui a un site Web WordPress, et il veut l'étendre pour ajouter de nouvelles fonctionnalités. Ces fonctionnalités sont incluses dans un site Web que j'ai déjà créé (une sorte de moteur de recherche sur une base de données, avec certains 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. Il ne me restera plus qu'à créer des vues pour afficher les résultats de 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 é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 le moyen le plus simple de faire, car je n'ai pas besoin du code utilisé par un autre tiers fête. S'il est possible de pirater une installation WordPress pour ajouter mes fichiers PHP, codez 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?

8
tahir

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

La chose principale à garder à l'esprit: c'est tout simplement PHP. Et aussi: ne modifiez pas les fichiers de base de WordPress, car vous aurez des problèmes lors de la mise à jour ultérieure d'une version plus récente. Le seul code à éditer est celui des plugins et des thèmes.

Si vous avez seulement besoin d’ajouter quelque chose à une page existante, il vous suffira de modifier le bon fichier de thème. Toutefois, si vous devez faire quelque chose de avancé (et ajouter une "vue" supplémentaire, comme pour une URL spécifique, est plus avancée dans WordPress), vous devez ajouter le code à un emplacement 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, basée sur l'URL. Si vous allez dans /category/banana/, il recherchera les publications de la catégorie banana et chargera le fichier de modèle correct dans lequel il vous suffira de faire une boucle et de les afficher. Toutefois, si vous accédez à /custom-view/, WordPress ne trouvera probablement pas de message et ne chargera pas le modèle 404 - ce qui ne vous offrira aucun moyen simple 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 dont le contenu n’est pas important, mais uniquement le modèle: elles y font ce qu’elles veulent. C'est bidouille, mais ça marche. La méthode la plus simple consisterait à définir des règles supplémentaires rewrite , permettant à WordPress de savoir que /custom-view/ est une URL valide, mais que quelque chose d'autre devrait s'y produire.

Si vous voulez faire cela, vous devez accrocher dans le système de base WordPress. La partie importante ici est accrocher dans , pas modify . WordPress a actions et filtres . Une action est juste une annonce ( "Hé, nous écrivons actuellement la balise <head>. Voulez-vous ajouter quelque chose aussi?" ). Un filtre vous permet de modifier une variable ( "Ceci est le titre de l'article. Si vous souhaitez la modifier, renvoyez une nouvelle valeur" ). Bien entendu, le truc consiste maintenant à savoir quelles actions et quels filtres utiliser. Cela dépend de la façon dont vous choisissez (pages stub ou nouvelles règles de réécriture), je ne vais donc pas entrer dans les détails ici.

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

9
Jan Fabry

Les bases

Vous devez contourner les bases pour les plugins et les 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" concernent davantage la "vue". Vous voudrez peut-être aussi en savoir plus sur le "Plugin API" .

JSON

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

Exemple JSON

Le reste serait quelque chose comme ça:

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

XML RPC

Le Codex a aussi quelque chose à propos de "XML Rpc" .

API HTTP

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


Webhooks

Ceci est additionnel, car il s’agit plus de donnant 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 aussi.

2
kaiser

Je suppose que vous connaissez PHP? Ou est-ce aussi une barrière?

Les plugins dans WordPress sont essentiellement une convention pour empaqueter PHP le code afin qu'il soit reconnu et géré par le noyau WordPress. C'est un format plutôt qu'une fonctionnalité.

En ce qui concerne les fonctionnalités actuelles, vous pouvez très bien utiliser PHP arbitraire, mais il est recommandé d’utiliser les API de WP pour des raisons de compatibilité et de fiabilité.

Pensez à votre code dans le contexte de WP en tant que include (ce qui sera techniquement). À partir de là, la portée de vos besoins et de vos ressources déterminera le pourcentage de réécriture spécifique à WordPress.

1
Rarst

Oui c'est possible.

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

par exemple:

add_action("hook", "function")

il est assez facile de construire soi-même un plugin une fois que vous savez comment fonctionne ce framework, eh bien ... je vous conseillerais de vous familiariser avec ce dernier, le lieu de connaissance le plus étendu (bien que pas le plus organisé - comme php. net) est le wordpress codex .

0
Itai Sagi