Ajouter ses propres Endpoints – #1

Ce que je veux faire va au delà de l’API de base. Comme dit dans mon 1er article, je veux supprimer tous les enregistrements Woocommerce d’une même catégorie avec un minimum de requêtes.

Par exemple, la requête SQL suivante (avec en paramètre le numéro de la catégorie) :

SELECT ID FROM wp_posts
WHERE post_type ='product'
AND post_status = 'publish'
AND ID IN
(SELECT object_id FROM wp_term_relationships
WHERE term_taxonomy_id IN (%(prod)s)
AND (term_taxonomy_id IN
(SELECT term_taxonomy_id
FROM wp_term_taxonomy
WHERE taxonomy='product_cat')))

Etudions la doc : Adding Custom Endpoints et Writing a WP REST API endpoint in 2 minutes

Tom J Nowell, dans son article (…en 2′) propose les étapes suivantes :

  • création d’une fonction de test
function tomjn_rest_test() {
        return "moomins";
}
  • enregistrement de l’endpoint
add_action( 'rest_api_init', function () {
        register_rest_route( 'tomjn/v1', '/test/', array(
                'methods' => 'GET',
                'callback' => 'tomjn_rest_test'
        ) );
} );

Si vous vous demandez où sont enregistrées ces fonctions (car ce n’est pas précisé dans l’article), dans quels fichiers, c’est que vous n’avez jamais créé de plugins.

Pour faire simple, créons un dossier : jb_test sous wp-content/plugins

Créons un fichier header.php tel que ci-dessous :


<?php
/*
Plugin Name: jb_test
Plugin URI: http://www.hegetique.com
Description: Test de l'API REST WP
Version: 0.1
Author: JB
Author URI: http://www.hegetique.com
License: GPLv2
*/
/* ----------------------------------------------- */
function jb_rest_test() {
return "moomins";
}
/* ----------------------------------------------- */
add_action( 'rest_api_init', function () {
register_rest_route( 'jb/v1', '/test/', array(
'methods' =&gt; 'GET',
'callback' =&gt; 'jb_rest_test'
) );
} );
?>

Dans le panneau d’administration WP, activons le plugin.

That’s it!

L’appel de http://www.hegetique.com/wp-json montre bien l’ajout du namespace jb/v1

L’appel de http://www.hegetique.com/wp-json/jb/v1/test affiche :

Je ne m’intéresse pas pour l’instant au reste de l’article Writing a WP REST API endpoint in 2 minutes car je souhaite aller plus loin dans l’exploration de l’API.

Je veux passer des paramètres et je veux sécuriser l’appel à l’API (il ne faut pas que n’importe qui puisse exécuter ces fonctions)

Passons à l’article suivant :

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *