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 :
- show_in_rest : indiquer qu’on veut le CPT dans le
- 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)
- 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.
0 Commentaire