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 :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

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 );

  }

[/pastacode]

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 :

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

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';
    }

  }

[/pastacode]

Pratique !

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

 

Cet article a été mis à jour il y a 3054 jours - Il n'est peut être plus à jour !

Article écrit par Maxime BJ

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

Co-fondateur de WPChef, la formation WordPress pour les débutants. Vous pouvez me rencontrer lors d’événements tels que les WordCamp. Traducteur Français de l’extension Advanced Custom Fields. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

0 Commentaire