Encore un article sur WordPress pour continuer le début de cette année. Cette fois-ci, je voulais vous parler de son API, que je découvre peu à peu.
WordPress a son API intégré, et ce, depuis sa version 4.7.
Elle vous permet, comme d’autres API, d’interagir avec votre plateforme autrement qu’en passant par son administration ou dépendant même de sa structure. En effet, en utilisant son API, vous pouvez très bien mettre en place un système de blog entièrement personnalisable et que vous alimenteriez avec un WordPress « à distance ».
Personnellement et dans l’agence pour laquelle je travaille, je mets en place des WordPress seulement si le client doit entrer dedans pour alimenter le contenu de son site. Dès lors, je n’ai pas encore utilisé autrement l’API que pour afficher simplement les contenus créés. Mais sachez qu’il est possible de supprimer, éditer ou ajouter du contenu sur votre WordPress via son API bien évidemment.
Maintenant que les présentations sont faites, voilà à quoi ressemble les données de l’intermediaire.be affichées grâce à l’API WordPress sur lequel il tourne.
Ce lien affiche tous les articles du blog sous format json : https://lintermediaire.be/wp-json/wp/v2/posts
Pour les pages par exemple, voilà donc comment on peut avoir le même résultat : https://lintermediaire.be/wp-json/wp/v2/pages
Un article seul ? C’est possible en y ajoutant son ID à la fin de l’url : https://lintermediaire.be/wp-json/wp/v2/posts/1824
Vous pouvez ensuite aller plus loin. En cliquant sur le lien ci-dessous, vous verrez que cela affichera le titre, le slug et l’ID des 4 derniers articles : https://lintermediaire.be/wp-json/wp/v2/posts?_fields=id,slug,title&per_page=4&order=desc
Après, il est possible de manipuler vos données json avec javascript pour les afficher sur votre site. Mais vous comprendrez assez vite que vous souhaiteriez afficher des données qui ne soient pas un titre ou un contenu éditable natif de WordPress, comme une date, une galerie d’images ou un montant. Et dans le même temps, si vous êtes parti de votre CMS préféré, c’est que vous aimez son administration et sa plateforme qui alimenteront votre projet.
La solution serait d’installer le plugin que je vous conseille pour ajouter des contenus spéciaux ; ACF (voir mon article qui en parle) – seulement, l’API ne prévoit pas l’affichage des métadonnées et il faut ajouter un second plugin pour intégrer ACF à l’API. Voilà le plugin à installer : https://fr.wordpress.org/plugins/acf-to-rest-api/
Dès lors, en combinant ACF, WordPress et son API, vous pourriez créer entièrement votre API puisqu’au final, vous créé un fichier json personnalisé et modifiable à distance ou via la plateforme Worpdress !
On peut rencontrer le même souci avec les postes personnalisés que vous auriez créés dans votre thème pour ne pas manipuler tout le contenu de votre site via les articles WordPress. Mais alors comment les intégrer à l’API ? WordPress a prévu le coup, en passant par des fonctions qui ajoutent des filtres à votre URL par exemple. Vous devrez également ajouter la valeur « true » en créant votre poste personnalisé à l’attribut « show_in_rest« .
Voilà un exemple de filtre :
<?php
function order_posts_by_date_debut($query_vars, $request) {
$type = $request->get_param('type');
if (isset($type) && $type === 'client') {
$query_vars["post_status"] = 'publish';
$query_vars["post_type"] = "post_client";
$query_vars["orderby"] = "date";
$query_vars["order"] = "ASC";
}
return $query_vars;
}
add_filter( 'rest_post_query', 'order_posts_by_date_debut', 10, 2);
Avec cette fonction, j’affiche mes articles spéciaux que j’ai créés pour l’intermédiaire, les postes de type « clients », seulement si dans l’URL j’ajoute comme valeur « client » au paramètre « type« . Et voilà comment afficher la latitude et la longitude de l’adresse de ces derniers renseignés par ACF : https://lintermediaire.be/wp-json/wp/v2/posts?_fields=id,title,slug,acf&type=client
Pas mal non ?
Encore une fois, WordPress nous démontre sa flexibilité. En « convertissant » sa base de données en API, il offre la possibilité d’entrer dans le monde des API, et de manipuler à distance des données dynamiquement créées par la célèbre plateforme. La question est cependant posée : pourquoi manipuler totalement ces données si elles peuvent déjà être insérées, supprimées ou ajoutées via le CMS ?
Si c’est au final pour se détacher complètement de WordPress, alors cela n’a pas de réelle utilité d’y rester. Mais cela plaira aux personnes comme moi qui ne savent pas (encore?) créer d’API ou travaillant avec des sites externes trop compliqué/long de convertir en un thème WordPress personnalisé.