Comment puis-je obtenir toutes les publications d'un type de publication personnalisé spécifique avec WP REST API (v1 ou v2)? Je suis très novice dans ce domaine et j'essaie de comprendre comment faire cela.
J'utilise actuellement WP REST API v2 et j'ai réussi à récupérer une liste de tous les types de publication avec cette
http://domain.com/wp-json/wp/v2/types
puis a réussi à obtenir le type de message qui m'intéresse avec
http://domain.com/wp-json/wp/v2/types/the-icons-update
Comment puis-je obtenir tous les messages de ce type de contenu spécifique?
J'ai essayé avec
http://domain.com/wp-json/wp/v2/posts?filter[post_type]=the-icons-update
Mais il renvoie un tableau vide (je suppose qu'il renvoie les publications par défaut et sur mon site, il n'y a que des publications dans le type de publication personnalisé que j'essaie de récupérer).
Peut-il y avoir un problème avec la façon dont j'ai enregistré le type de message?
function custom_post_type() {
$labels = array(
'name' => _x( 'The Icons Update', 'post type general name' ),
'singular_name' => _x( 'The Icons Update', 'post type singular name' ),
'add_new' => _x( 'Add Page', 'magazine' ),
'add_new_item' => __( 'Add New Page' ),
'edit_item' => __( 'Edit Page' ),
'new_item' => __( 'New Page' ),
'all_items' => __( 'All Pages' ),
'view_item' => __( 'View Page' ),
'search_items' => __( 'Search Pages' ),
'not_found' => __( 'No Page found' ),
'not_found_in_trash' => __( 'No Page found in the Trash' ),
'parent_item_colon' => '',
'menu_icon' => '',
'menu_name' => 'The Icons Update'
);
$args = array(
'labels' => $labels,
'description' => 'Holds our projects and project specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
'has_archive' => true,
'taxonomies' => array('post_tag', 'category'),
'hierarchical' => false,
'query_var' => true,
'queryable' => true,
'searchable' => true,
'rewrite' => array( 'slug' => 'the-icons-update' )
);
register_post_type( 'magazine', $args );
flush_rewrite_rules();
}
add_action( 'init', 'custom_post_type' );
Toute aide à cet égard est vraiment appréciée.
Il suffit d’ajouter le parent suivant dans la fonction register_post_type, cela peut être avant le paramètre 'menu_position'. 'show_in_rest' => true
si vous utilisez un plugin pour enregistrer votre type postal, vous pouvez utiliser le code suivant:
add_action( 'init', 'add_anuncios_to_json_api', 30 );
function add_anuncios_to_json_api(){
global $wp_post_types;
$wp_post_types['anuncio']->show_in_rest = true;
}
après cela, vous pourrez lister vos messages de mydomain.com/wp-json/wp/v2/posttype_slug
dans mon cas: mydomain.com/wp-json/wp/v2/anuncio
vous pouvez également enregistrer une nouvelle base en utilisant le code suivant:
add_action( 'init', 'add_anuncios_to_json_api', 30 );
function add_anuncios_to_json_api(){
global $wp_post_types;
$wp_post_types['anuncio']->show_in_rest = true;
$wp_post_types['anuncio']->rest_base = 'clasi';
$wp_post_types['anuncio']->rest_controller_class = 'WP_REST_Posts_Controller';
}
remplacez simplement anuncio
par votre type de message et "clasi" sera votre itinéraire. mydomain.com/wp-json/wp/v2/clasi
Pour afficher les types de publication personnalisés dans la version 2, vous devez ajouter 'show_in_rest' => true
dans les arguments de la fonction register_post_type. Vos publications avec ce type de publication personnalisée seront disponibles au point de terminaison: wp-json/wp/v2/your-custom- post-type .
Source: http://scottbolinger.com/custom-post-types-wp-api-v2/
Vous devriez utiliser ceci: -
http://domain.com/wp-json/wp/v2/posts?job-type=your-post-type
Esperons que ça marche :)
Ok voici ma réponse complète: -
function prefix_register_post_type()
{
register_post_type(
'prefix_portfolio',
array(
'labels' => array(
'name' => __('Portfolio', 'text_domain'),
'singular_name' => __('Portfolio', 'text_domain'),
'menu_name' => __('Portfolio', 'text_domain'),
'name_admin_bar' => __('Portfolio Item', 'text_domain'),
'all_items' => __('All Items', 'text_domain'),
'add_new' => _x('Add New', 'prefix_portfolio', 'text_domain'),
'add_new_item' => __('Add New Item', 'text_domain'),
'edit_item' => __('Edit Item', 'text_domain'),
'new_item' => __('New Item', 'text_domain'),
'view_item' => __('View Item', 'text_domain'),
'search_items' => __('Search Items', 'text_domain'),
'not_found' => __('No items found.', 'text_domain'),
'not_found_in_trash' => __('No items found in Trash.', 'text_domain'),
'parent_item_colon' => __('Parent Items:', 'text_domain'),
),
'public' => true,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'thumbnail',
'excerpt',
'custom-fields',
),
'taxonomies' => array(
'prefix_portfolio_categories',
),
'has_archive' => true,
'rewrite' => array(
'slug' => 'portfolio',
),
)
);
}
add_action('init', 'prefix_register_post_type');
function prefix_register_taxonomy()
{
register_taxonomy(
'prefix_portfolio_categories',
array(
'prefix_portfolio',
),
array(
'labels' => array(
'name' => _x('Categories', 'prefix_portfolio', 'text_domain'),
'singular_name' => _x('Category', 'prefix_portfolio', 'text_domain'),
'menu_name' => __('Categories', 'text_domain'),
'all_items' => __('All Categories', 'text_domain'),
'edit_item' => __('Edit Category', 'text_domain'),
'view_item' => __('View Category', 'text_domain'),
'update_item' => __('Update Category', 'text_domain'),
'add_new_item' => __('Add New Category', 'text_domain'),
'new_item_name' => __('New Category Name', 'text_domain'),
'parent_item' => __('Parent Category', 'text_domain'),
'parent_item_colon' => __('Parent Category:', 'text_domain'),
'search_items' => __('Search Categories', 'text_domain'),
),
'show_admin_column' => true,
'hierarchical' => true,
'rewrite' => array(
'slug' => 'portfolio/category',
),
)
);
}
add_action('init', 'prefix_register_taxonomy', 0);
Vous devez également enregistrer la taxonomie lors de l'enregistrement de la publication personnalisée.
Après cela, la demande serait:
wp-json/wp/v2/posts/?taxonomy=prefix_portfolio_categories'&term=your-any-category
J'espère que cela peut vous aider :)