API WP REST tìm nạp bài đăng từ loại bài đăng


15

Làm cách nào tôi có thể nhận được tất cả các bài đăng từ một loại bài đăng tùy chỉnh cụ thể với WP REST API (v1 hoặc v2)? Tôi rất mới với điều này và cố gắng hiểu làm thế nào để làm điều đó.

Tôi hiện đang sử dụng WP REST API v2 và quản lý để tìm nạp danh sách tất cả các loại bài đăng với điều này

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

và sau đó quản lý để có được loại bài đăng mà tôi quan tâm

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

Làm cách nào để có được tất cả các bài đăng từ loại nội dung cụ thể đó?

Tôi đã thử với

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

Nhưng nó trả về một mảng trống (tôi cho rằng nó trả về các bài đăng mặc định và trên trang web của tôi chỉ có các bài đăng bên trong loại bài đăng tùy chỉnh mà tôi đang cố gắng truy xuất).

Có thể có một vấn đề với cách tôi đăng ký loại bài đăng?

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

Bất kỳ trợ giúp với điều này thực sự được đánh giá cao.

Câu trả lời:


18

Chỉ cần thêm parmater tiếp theo vào hàm register_post_type, nó có thể nằm trước 'menu_poseition'parameter. 'show_in_rest' => đúng

nhập mô tả hình ảnh ở đây

nếu bạn đang sử dụng một plugin để đăng ký posttype của mình, bạn có thể sử dụng mã tiếp theo:

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

sau đó, bạn sẽ có thể liệt kê các bài đăng của mình từ mydomain.com/wp-json/wp/v2/posttype_slug

trong trường hợp của tôi: mydomain.com/wp-json/wp/v2/anuncio

bạn cũng có thể đăng ký một cơ sở mới bằng cách sử dụng mã tiếp theo:

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

chỉ cần thay thế anuncio cho sên loại bài của bạn và 'clasi' sẽ là tuyến đường của bạn. mydomain.com/wp-json/wp/v2/clasi


Cảm ơn bạn, điều này gần như đã giải quyết vấn đề của tôi! Bây giờ tôi nhận được một số bài đăng từ loại bài đăng cụ thể đó nhưng không phải tất cả chúng đều xuất hiện và dữ liệu của chúng không đầy đủ, ví dụ như danh mục không được liệt kê và tôi cũng cần các trường tùy chỉnh nâng cao để được liệt kê (trong WP REST API v1.2.3 Tôi quản lý để làm cho ACF xuất hiện). Cảm ơn sự giúp đỡ của bạn về điều này
Jeff

4

Để hiển thị các loại bài đăng tùy chỉnh trong phiên bản 2, bạn cần thêm 'show_in_rest' => true vào các đối số chức năng register_post_type, sau đó các bài đăng của bạn với loại bài đăng tùy chỉnh đó sẽ có sẵn ở điểm cuối: wp-json / wp / v2 / your-custom-post-type .

Nguồn: http://scottbolinger.com/custom-post-types-wp-api-v2/


0

Bạn nên sử dụng cái này: -

http://domain.com/wp-json/wp/v2/posts?job-type=your-post-type 

Hy vọng nó hoạt động :)


Cảm ơn bạn rất nhiều vì đã trả lời nhưng điều đó không hiệu quả :(
Jeff

Vui lòng lưu ý nếu bạn đặt query_var thành false khi đăng ký phân loại tùy chỉnh, bạn sẽ cần thay đổi các tham số thành: wp-json / wp / v2 / post /? Taxonomy = job-type & term = manager (chỉ là một ví dụ)
dev

Cảm ơn bạn nhưng nó cũng không hoạt động. Có thể có một vấn đề với cách tôi đăng ký loại bài tùy chỉnh? Tôi đã cập nhật câu hỏi, Nếu bạn có thể xem nó tôi sẽ rất biết ơn
Jeff

Có, chỉ cần kiểm tra câu trả lời được cập nhật
dev

0

Ok đây là câu trả lời hoàn chỉnh của tôi: -

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

Bạn cũng nên đăng ký phân loại trong khi đăng ký bài tùy chỉnh.

Sau đó, yêu cầu sẽ là:

wp-json/wp/v2/posts/?taxonomy=prefix_portfolio_categories'&term=your-any-category

Hy vọng điều này có thể giúp bạn :)


Cảm ơn bạn một triệu vì nỗ lực của bạn trong việc này nhưng thật không may, điều đó cũng không hiệu quả. Tôi chắc chắn rằng tôi khá thân thiết nhưng tôi không hiểu vấn đề có thể là gì. Cảm ơn bạn một lần nữa
Jeff
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.