WP REST API는 게시물 유형에서 게시물을 가져옵니다.


15

WP REST API (v1 또는 v2)를 사용하여 특정 사용자 정의 게시물 유형에서 모든 게시물을 가져 오려면 어떻게해야합니까? 나는 이것에 매우 익숙하며 그것을하는 방법을 이해하려고 노력하고 있습니다.

현재 WP REST API v2를 사용하고 있으며 모든 게시물 유형 목록을 가져 왔습니다.

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

관심있는 게시물 유형을 가져 왔습니다.

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

특정 컨텐츠 유형에서 모든 게시물을 가져 오려면 어떻게합니까?

나는 함께 시도했다

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

그러나 빈 배열을 반환합니다 (기본 게시물을 반환하고 내 사이트에는 검색하려는 사용자 정의 게시물 유형 안에 게시물 만 있다고 가정합니다).

게시물 유형을 등록하는 방법에 문제가있을 수 있습니까?

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

이것에 대한 도움은 정말 감사합니다.

답변:


18

다음 매개 변수를 register_post_type 함수에 추가하면 'menu_position'매개 변수 앞에있을 수 있습니다. 'show_in_rest'=> true

여기에 이미지 설명을 입력하십시오

플러그인을 사용하여 포스트 타입을 등록하는 경우 다음 코드를 사용할 수 있습니다.

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

그 후에는 mydomain.com/wp-json/wp/v2/posttype_slug에서 게시물을 나열 할 수 있습니다.

내 경우에는 : mydomain.com/wp-json/wp/v2/anuncio

다음 코드를 사용하여 새베이스를 등록 할 수도 있습니다.

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

anuncio귀하의 게시물 유형 슬러그를 교체 하면 'clasi'가 경로가됩니다. mydomain.com/wp-json/wp/v2/clasi


고마워, 이것은 거의 내 문제를 해결했다! 이제 특정 게시물 유형에서 일부 게시물을 얻지 만 모든 게시물이 표시되지 않고 데이터가 완전하지 않습니다. 예를 들어 카테고리가 표시되지 않고 고급 사용자 정의 필드가 나열되어야합니다 (WP REST API v1.2.3에서) ACF가 표시되도록했습니다.) 도움을 주셔서 감사합니다
Jeff

4

버전 2에서 사용자 정의 게시물 유형을 표시하려면 'show_in_rest' => trueregister_post_type 함수 인수 를 추가해야합니다 . 그러면 해당 사용자 정의 게시물 유형의 게시물을 엔드 포인트에서 사용할 수 있습니다 ( wp-json / wp / v2 / your-custom-post-type) .

출처 : http://scottbolinger.com/custom-post-types-wp-api-v2/


0

이것을 사용해야합니다 :-

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

그것이 작동하기를 바랍니다 :)


답장을 보내 주셔서 감사합니다. 그래도 효과가 없었습니다 :(
Jeff

사용자 정의 분류 체계를 등록 할 때 query_var를 false로 설정 한 경우 매개 변수를 다음과 같이 변경해야합니다. wp-json / wp / v2 / posts /? taxonomy = job-type & term = manager (단지 예)
dev

고맙지 만 작동하지 않았습니다. 맞춤 게시물 유형을 등록하는 방법에 문제가있을 수 있습니까? 질문을 업데이트했습니다. 살펴보면 매우 감사하겠습니다
Jeff

예, 방금 업데이트 된 답변을 확인 함
dev

0

여기 내 완전한 대답이 있습니다 :-

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

맞춤 게시물을 등록하는 동안 분류법도 등록해야합니다.

이 요청은 다음과 같습니다.

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

희망이 당신을 도울 수 있습니다 :)


당신의 노력에 대해 백만 감사하지만 불행히도 그것은 작동하지 않았습니다. 나는 꽤 가깝다고 확신하지만 문제가 무엇인지 알 수 없습니다. 다시 감사합니다
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.