Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WP REST API fetch posts from post type

How can I get all the posts from a specific custom post type with WP REST API (either v1 or v2)? I'm very new to this and trying to understand how to do that.

I am currently using WP REST API v2 and managed to fetch a list of all the post types with this

http://domain.com/wp-json/wp/v2/types

and then managed to get the post type I'm interested in with

http://domain.com/wp-json/wp/v2/types/the-icons-update

How do I get all the posts from that specific content type?

I have tried with

http://domain.com/wp-json/wp/v2/posts?filter[post_type]=the-icons-update

But it returns an empty array (I suppose it returns the default posts and on my site there are only posts inside the custom post type I'm trying to retrieve).

Could there be an issue with how I registered the post type?

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

Any help with this is really appreciated.

like image 443
Jeff Avatar asked Sep 04 '15 08:09

Jeff


1 Answers

There is a really shot and easy way for v.2. All that you have to do is to include to your args array the following property: 'show_in_rest' => true

Example:

register_post_type( 'recipe',
     array(
          'labels' => $labels,
          'public' => true,
          'menu_position' => 5,
          'hierarchical' => false,
          'supports' => $supports,
          'show_in_rest' => true,
          'taxonomies' => array('recipe-type', 'post_tag'),
          'rewrite' => array( 'slug' => __('recipe', 'recipe') )
     )
);
like image 131
Hristo Eftimov Avatar answered Sep 24 '22 11:09

Hristo Eftimov