Tout savoir sur WordPress

Tuto WP API Rest : comment ajouter vos Custom Post Types à l’API rest WP

Vous pouvez très facilement ajouter vos custom post types à l’API Rest WP et exposer son contenu. Pour cela il suffit d’ajouter quelques lignes à la déclaration de vote Custom Post Type.

Déclarer la prise en charge de l’API lors de la déclaration de vos CPTs

Il vous faudra ajouter ces 3 paramètres dans la déclaration du CPT, dans functions.php :

  1. show_in_rest : indiquer qu’on veut le CPT dans le
  2. rest_base : (facultatif) l’url de base pour joindre les données. Dans l’exemple ci-dessous on aura /wp-json/v2/books-api (au lieu de books si on ne touche rien)
  3. rest_controller_class : la classe API utilisée (avancé) si vous avez crée des fonctions avancées

Voici le code :

add_action( 'init', 'my_book_taxonomy', 30 );
  function my_book_taxonomy() {

    $labels = array(
        'name'              => _x( 'Genres', 'taxonomy general name' ),
        'singular_name'     => _x( 'Genre', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Genres' ),
        'all_items'         => __( 'All Genres' ),
        'parent_item'       => __( 'Parent Genre' ),
        'parent_item_colon' => __( 'Parent Genre:' ),
        'edit_item'         => __( 'Edit Genre' ),
        'update_item'       => __( 'Update Genre' ),
        'add_new_item'      => __( 'Add New Genre' ),
        'new_item_name'     => __( 'New Genre Name' ),
        'menu_name'         => __( 'Genre' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'genre' ),
        'show_in_rest'       => true,
        'rest_base'          => 'genre',
        'rest_controller_class' => 'WP_REST_Terms_Controller',
    );

    register_taxonomy( 'genre', array( 'book' ), $args );

  }

Ajouter la prise en charge API sur un CPT déjà déclaré

dans certains cas, les CPT seront déjà déclarés, par exemple par un plugin. Hors de question bien entendu de modifier le code du plugin (sinon vos modifications seront perdues à la prochaine mise à jour) du coup il existe une façon propre de le faire, en passant par un hook.  Voici le code :

add_action( 'init', 'my_custom_post_type_rest_support', 25 );
  function my_custom_post_type_rest_support() {
    global $wp_post_types;

    //be sure to set this to the name of your post type!
    $post_type_name = 'planet';
    if( isset( $wp_post_types[ $post_type_name ] ) ) {
        $wp_post_types[$post_type_name]->show_in_rest = true;
        $wp_post_types[$post_type_name]->rest_base = $post_type_name;
        $wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
    }

  }

Pratique !

D’autres exemples sur la documentation officielle de l’API Rest.

 

Cet article a été mis à jour il y a 450 jours

Article écrit par Maxime BJ

Développeur, bloggeur et formateur Web spécialisé WordPress. 31 ans. Grenoblois. Co-fondateur de WPChef, l’organisme de formation WordPress.

Organisateur de WPInAlps, le meetup WordPress Grenoblois. Vous pouvez me rencontrer lors d’événements tels que WordCamp Paris et Europe. Traducteur Français de l’extension Advanced Custom Fields. Également développeur d’applications web avec MeteorJs. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

J’aime les jeux vidéo, la rando, la bouffe bien grasse et les voyages.

0 Commentaire

Laisser un commentaire

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

21ae1a105a6fe9d25e20cd0ca0b95086((((((