Fonctionnalités après fonctionnalités, WordPress tend à laisser tomber le manteau de système de blogging pour revêtir celui de système de développement d’applications. Le premier pas sensible vers ce changement à été l’introduction des types de post personnalisés (custom post types) dans sa version 2.9.

Aujourd’hui, la transformation se poursuit avec l’arrivée de l’API REST de WordPress.

Dans ce tutoriel, je vous expliquerais ce qu’est l’API REST de WordPress et vous montrerais comment l’utiliser.

Mais avant, si vous n’avez jamais installé WordPress découvrez Comment installer un blog WordPress en 7 étapes et Comment rechercher, installer et activer un thème WordPress sur votre blog 

Ensuite revenons vers ce pourquoi nous sommes là

Qu’est ce que l’API REST

Pour faire simple, comprenez que L’API REST de WordPress, permet d’interagir avec le noyau de WordPress sans passer par son interface graphique. Cela signifie un découplage du noyau et de l’interface graphique. Avec cette API, vous pouvez par exemple créer un nouvel article, sans avoir à accéder au tableau de bord. L’API REST sera incluse dans le noyau à la sortie de la version 4.4 d’ici Décembre.

Etant donné la nature du sujet de ce tutoriel, une bonne connaissance du langage PHP et de WordPress est nécessaire.

Qu’avons nous besoin pour ce tutoriel

Pour commencer avec l’API REST, vous aurez besoin du plugin REST API ainsi que de la dernière version de WordPress. Vous l’avez ? Si non, voyez pourquoiDes notions sur l’API HTTP de WordPress seront aussi de bonnes compagnies pour effectuer les appels distants.

Découvrez en cliquant sur ce lien Comment installer (ajouter) un plugin sur WordPress

Comme projet pour ce tutoriel, nous créerons une installation locale de WordPress à partir de laquelle nous récupérerons des articles de notre site web à travers l’API REST. Assurez vous bien d’avoir le plugin REST API installé et activé sur le site web de production.

Maintenant, créez un widget dans votre installation en local. En voici le code de base :

/**
 * Plugin Name: REST API Widget Essai
 * Plugin URI: http://le-site-de-votre-widget-ici.com
 * Description: Ce widget récupère des articles à l'aide de l'API REST
 * Version: 1.0
 * Author: Votre nom
 * Author URI: http://votre-site.com
 */

class Mes_Articles_Widget extends WP_Widget {

    public function __construct() {
        $widget_details = array(
            'classname' => 'widget-essai-rest-api',
            'description' => 'Un widget qui récupère des articles à l'aide de l'API REST depuis un autre site'
        );

        parent::__construct( 'widget-essai-rest-api', 'REST API Widget Essai', $widget_details );

    }

    public function form( $instance ) {
        $title = ( !empty( $instance['title'] ) ) ? $instance['title'] : '';
        ?>

        <p>
            <label for="<?php echo $this->get_field_name( 'title' ); ?>">Title: </label>
            <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
        </p>

        <?php
    }
    public function widget( $args, $instance ) {
        echo $args['before_widget'];
        if( !empty( $instance['title'] ) ) {
            echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title'];
        }
        // le code fonctionnel du widget ici
        echo $args['after_widget'];
    }
}
add_action( 'widgets_init', function(){
     register_widget( 'Mes_Articles_Widget' );
});

Dans le répertoire du plugin de votre site web local, créez un dossier nommé widget-essai-rest-api. Dans ce dossier, créez un fichier nommé widget-essai-rest-api.php et collez y le code ci-dessus.

Découvrez en passant Comment gérer et restaurer une version de WordPress avec VersionPress

Ce code contient l’entête des extensions (les commentaires en début de code) qui permet à WordPress de savoir qu’il s’agit d’une extension. Vient ensuite le code minimum de création d’un widget, augmenté de quelques lignes. 

Nous mettrons plus l’accent sur la fonction widget(), car c’est à l’intérieur de celle-ci que se construit l’affichage du widget. Par conséquent, c’est à l’intérieur de cette fonction que nous ferons les appels à l’aide de l’HTTP API.

Récupérer les articles

Nous aurons besoin de quelques informations afin d’interroger le site web de production ou site web en ligne. Ces dernières constitueront en quelque sorte la question posée au noyau de WordPress de notre site web en ligne. Ce sont le chemin de base de l’API, la route utilisée, la terminaison utilisée, les entêtes, et les paramètres.

Sublimer vos images illustratives en découvrant Comment créer des images interactives sur un blog WordPress

Le chemin de base de l’API REST de WordPress est toujours /wp-json/wp/v2/. Ainsi, le chemin complet sera http://votre-domaine.com/wp-json/wp/v2/.

La route utilisée pour récupérer les articles est /posts. Ce qui fait que la route complète pour les articles est http://votre-domaine.com/wp-json/wp/v2/posts.

Chaque route peut avoir un certain nombre de terminaisons, différenciées par la méthode HTTP utilisée. Ainsi la route d’un article peut être /posts/291. Cette route a 3 terminaisons :

GET : pour récupérer l’article
PUT : pour mettre à jour l’article
DELETE : pour supprimer l’article.

En faisant usage de l’HTTP API et de la terminaison GET, récupérer les articles se résume en une ligne de code :

$response = wp_remote_get( 'http://mysite.com/wp-json/wp/v2/posts/' );

Rendez vos articles populaires en découvrant Comment ajouter des boutons de partage sur WordPress

Si la réponse est un objet WP_Error, on termine l’exécution de notre fonction widget(), dans le cas contraire, on examine le contenu du corps de la réponse avec la fonction wp_remote_retrieve_body à la recherche d’articles encodés au format JSON. Voilà à quoi ressemble alors la fonction widget()  :

 public function widget( $args, $instance ) {
    $response = wp_remote_get( 'http://mysite.com/wp-json/wp/v2/posts/' );

    if( is_wp_error( $response ) ) {
        return;
    }

    $posts = json_decode( wp_remote_retrieve_body( $response ) );

    if( empty( $posts ) ) {
        return;
    }   
    echo $args['before_widget'];

    if( !empty( $instance['title'] ) ) {
        echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title'];
    }
    if( !empty( $posts ) ) {
        echo '<ul>';
        foreach( $posts as $post ) {
            echo '<li><a href="' . $post->link. '">' . $post->title->rendered . '</a></li>';
        }
        echo '</ul>';
    }
    echo $args['after_widget'];
}

Ce qui est intéressant dans cet exemple c’est qu’en remplaçant la fonction wp_remote_get par autre chose, cet exemple sortirai du cadre de WordPress. Cela signifie qu’on peut interroger le noyau de WordPress depuis n’importe quelle autre plateforme, que ce soit Joomla, Prestashop, Drupal, Android ou IOS.

Allez plus loin en découvrant ces 8 plugins WordPress pour transformer votre site web en application mobile

Vous pouvez donc créer une application mobile native connectée à un back office WordPress. L’API REST transforme WordPress en plateforme de développement d’applications.

Aller plus loin avec l’API REST

Interroger le noyau de WordPress dans le but d’interagir avec des données constitue 90% de son utilisation. Mais il reste encore quelques domaines qu’il serait intéressant d’explorer : la mise en cache de réponse, l’authentification et la découverte de services.

La mise en cache de réponse

Lorsqu’on récupère des informations comme les articles de notre exemple, il est de bonne mise de les mettre en cache, c’est à dire les copier quelque part sur le terminal appelant afin d’éviter d’autres appels pour les mêmes informations vers le serveur. Différentes approches existent pour réaliser cela incluant JP REST API CACHE, le plugins de cache, et les transients.

L’idée de transient est de recopier l’information en local avec une date d’expiration. Par défaut, la copie sera dans la base de données, mais certaines implémentations permettent de copier directement en mémoire, ce qui rend l’opération de restitution encore plus rapide.

Consultez aussi ces 7 plugins WordPress premium pour optimiser la mise en cache de votre site web

Les informations sont alors récupérées depuis la base de données locale jusqu’à leur expiration où, elles sont alors rappelées depuis le site web distant. Voici une version modifiée de notre widget qui inclue la notion de transient (avec une nouvelle fonction) :

public function get_remote_posts() {
    $posts = get_transient( 'remote_posts' );
    if( empty( $posts ) ) {
        $response = wp_remote_get( 'http://votre-domaine.com/wp-json/wp/v2/posts/' );
        if( is_wp_error( $response ) ) {
            return array();
        }

        $posts = json_decode( wp_remote_retrieve_body( $response ) );

        if( empty( $posts ) ) {
            return array();
        }

        set_transient( 'remote_posts', $posts, HOUR_IN_SECONDS );
    }

    return $posts;
}

public function widget( $args, $instance ) {
    $posts = $this->get_remote_posts();

    if( empty( $posts ) ) {
        return;
    }
    
    echo $args['before_widget'];

    if( !empty( $instance['title'] ) ) {
        echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title'];
    }

    echo '<ul>';
    foreach( $posts as $post ) {
        echo '<li><a href="' . $post->link. '">' . $post->title->rendered . '</a></li>';
    }
    echo '</ul>';

    echo $args['after_widget'];

}

L’authentification

Lorsque vous travaillez avec des ressources externes, il est conseillé de s’identifier. Ceci se fait par le processus d’authentification. L’API REST vous donne deux méthodes pour vous identifier : l’authentification basique et OAuth.

L’authentification basique : des deux méthodes, celle ci est la plus simple. Elle consiste à envoyer votre nom d’utilisateur et votre mot de passe avec chaque requête, ce qui comporte de gros risques de sécurité. Pour cette raison, il faut le plus possible ne PAS l’utiliser en production.

Pour utiliser l’authentification basique, il faut installer et activer le plugin Basic-Auth. Ensuite, pour réaliser un appel authentifié, déclarez l’entête avec Basic <Base64 encoded username:password> et effectuez l’appel :

$headers = array (
    'Authorization' => 'Basic ' . base64_encode( 'username:password' ),
);

$response = wp_remote_request( 'http://votre-domaine.com/wp-json/wp/v2/posts/1234/', array(
    'method' => 'DELETE',
    'headers' => $headers
));

Consultez aussi comment ajouter une authentification à double facteur sur WordPress

Prenez garde à cet exemple, car si vous l’essayez sur votre site web, vous effacerez l’article qui possède l’ID 1234 si ce dernier existe.

OAuth : Cette méthode, encore obscure du point de vue de la documentation requiert que vous installiez et activiez le plugin OAuth1. La mise en œuvre de cette méthode d’authentification inclue l’installation et l’utilisation combinée de WP-CLI, une ligne de commande pour WordPress et de WP Client CLI.

L’introduction d’interfaces de ligne de commande ne pose pas de problème en soi, mais c’est le manque de liste de commande qui fait hic.

La découverte de services

Une partie de l’apprentissage de toute API est de se familiariser avec ses options. Alors je vous recommande de consulter la partie sur la découverte de services de la documentation de l’API REST de WordPress.

Vous y trouverez des méthodes pour interagir avec les articles, les types de post, les médias, les métadonnées ainsi que des irrégularités comme l’impossibilité de supprimer un utilisateur ou d’autres soucis mineurs.

Retenez que c’est un travail en cours qui est tout de même déjà très intéressant.

Qui utilise l’API REST de WordPress ?

En toutes choses, il y a des pionniers, l’API REST de WordPress n’y fait aucune exception. Voici une courte liste des quelques compagnies qui font usage de l’API, malgré sa jeunesse :

Human made utilisent l’API pour créer des sites web pour des clients qui veulent quelque chose de plus flexible pour le frontend.

WP Search Live est un plugin gratuit qui fait usage de l’API pour ses fonctions de recherche.

Editus est un plugin premium qui emploi l’API pour ses fonctions d’édition sur le frontend.

D’après Who’s using this thing? d’autres personnes et compagnies mettent en oeuvre l’API REST de WordPress pour concevoir des applications mobiles.

Malgré sa jeunesse, l’API REST de WordPress est très prometteuse en tant que fonctionnalité majeure dans la transformation de WordPress en plateforme de développement d’applications.

Utilisez-vous aussi l’API REST de WordPress ?  Nous aimerions avoir vos impressions sur le sujet.

Comment trouvez-vous les opportunités qu’elle offre ? Partagez vos réactions avec nous dans notre section de commentaires.

Découvrez aussi quelques plugins WordPress premium  

Vous pouvez utiliser d’autres plugins WordPress pour donner une apparence moderne et pour optimiser la prise en main de votre blog ou site web.

Nous vous proposons donc ici quelques plugins WordPress premium qui vous aideront à le faire.

1. WordPress Ultimate Redirect

L’extension « WordPress ultime Redirect » est la seule et unique solution dont vous avez besoin pour gérer tous vos besoins de redirections, 404, migration de site et/ou changement ou transfert de domaine.

Wordpress ultimate redirect plugin

Il y a des plugins qui font ce que plugin fait, mais pas tout à la fois. Ce plugin fournit toutes les fonctionnalités usuelles de redirection 404, plus notre préférée « auto-redirection vers la plus proche correspondance d’URL ».

Télécharger | Démo | Hébergement Web

2. Leadeo

Saviez-vous que utiliser une vidéo sur votre Landing Page peut améliorer les conversions de plus de 80%. De même sur les pages de ventes avec plus de 46%. Leadeo pourra vous aider à obtenir plus de prospects et de ventes de personnes qui regardent la vidéo sur votre blog.Leadeo

Grâce à ce plugin, vous pourrez créer une vidéo utile pour une audience ciblée, la partager sur vos réseaux sociaux et votre liste de contacts via email, et envoyer quelques publicités. Ainsi des gens verront la vidéo et l’apprécieront.

Dans la mesure où la vidéo suscite l’intérêt escompté, il est proposé à ceux qui l’ont regardée de :

  • s’inscrire à votre liste d'emails pour obtenir de bons tuyaux
  • vous contacter
  • partager un truc intéressant que vous avez dit dans la vidéo
  • partager la vidéo avec leurs amis
  • cliquer sur votre bouton d’appel à l’action
  • et autre

Et toutes ces actions sont proposées juste à droite de la vidéo.

Télécharger | Démo | Hébergement Web

3. CommentPress

CommentPress est un plugin puissant WordPress compact qui vous permet d’insérer, de modifier et de supprimer des commentaires rapidement et facilement. CommentPress utilise Ajax, jQuery et PHP pour donner la possibilité aux visiteurs d’insérer des commentaires sans avoir à recharger la page.Commentpress ajax comments insert edit and delete comments

Ce plugin possède de nombreuses options de personnalisation, enfin de lui donner le look et l’apparence que vous souhaitez. Il possède un captcha pour bloquer les spams et apporte à votre section commentaire plus de sécurité.

Ses principales fonctionnalités sont : l’insertion facile des commentaires, la possibilité donnée aux utilisateurs de répondre à des commentaires spécifiques, la pagination des commentaires, la gestion complète de l’administration de la section commentaires, des boutons d’insertion facile des images, des vidéos et des liens, une mise en page entièrement responsive, un Captcha pour sécuriser le formulaire et éviter le spam, et beaucoup plus.

Télécharger | Démo | Hébergement Web

Ressources recommandées

Découvrez d’autres ressources recommandées qui vous accompagneront dans la création et la gestion de votre site web.

Conclusion

Voilà ! C’est tout pour ce tutoriel. Nous espérons que ce tutoriel vous a montré comment utiliser l’API REST de WordPress. N’hésitez pas à partager cet articles avec vos amis sur vos réseaux sociaux préférés

Cependant, vous pourrez aussi consulter nos ressources, si vous avez besoin de plus d’éléments pour mener à bien vos projets de création de sites internet, en consultant notre guide sur la création de blog WordPress.

Si vous avez des suggestions ou des remarques, laissez-les dans notre section commentaires.

…