WP REST API mengambil kiriman dari jenis kiriman

15

Bagaimana saya bisa mendapatkan semua posting dari jenis posting khusus tertentu dengan WP REST API (baik v1 atau v2)? Saya sangat baru dalam hal ini dan mencoba memahami bagaimana melakukan itu.

Saat ini saya menggunakan WP REST API v2 dan berhasil mengambil daftar semua jenis posting dengan ini

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

dan kemudian berhasil mendapatkan jenis posting yang saya minati

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

Bagaimana cara mendapatkan semua posting dari jenis konten tertentu?

Saya sudah mencoba

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

Tetapi ia mengembalikan array kosong (saya kira ia mengembalikan posting default dan di situs saya hanya ada posting di dalam jenis posting kustom saya mencoba untuk mengambil).

Mungkinkah ada masalah dengan cara saya mendaftarkan jenis posting?

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

Setiap bantuan dengan ini sangat dihargai.

Jeff
sumber

Jawaban:

18

Cukup tambahkan parmater berikutnya ke dalam fungsi register_post_type, bisa sebelum 'menu_position'parameter. 'show_in_rest' => true

masukkan deskripsi gambar di sini

jika Anda menggunakan plugin untuk mendaftarkan posttype Anda, Anda dapat menggunakan kode berikutnya:

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

setelah itu, Anda dapat membuat daftar posting Anda dari mydomain.com/wp-json/wp/v2/posttype_slug

dalam kasus saya: mydomain.com/wp-json/wp/v2/anuncio

Anda juga dapat mendaftarkan basis baru menggunakan kode berikutnya:

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

cukup ganti anunciountuk siput tipe posting Anda dan 'clasi' akan menjadi rute Anda. mydomain.com/wp-json/wp/v2/clasi

Dioni Mercado
sumber
Terima kasih, ini hampir menyelesaikan masalah saya! Saya sekarang mendapatkan beberapa posting dari jenis posting tertentu tetapi tidak semuanya muncul dan juga datanya tidak lengkap, misalnya kategori tidak terdaftar dan saya juga perlu bidang khusus lanjutan untuk dicantumkan (dalam WP REST API v1.2.3 Saya berhasil membuat ACF muncul). Terima kasih atas bantuan Anda dalam hal ini
Jeff
4

Untuk menampilkan tipe posting khusus dalam versi 2, Anda perlu menambahkan 'show_in_rest' => trueargumen fungsi register_post_type, maka postingan Anda dengan tipe posting kustom tersebut akan tersedia di titik akhir: wp-json / wp / v2 / tipe-custom-post-type Anda .

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

kabisote
sumber
0

Anda harus menggunakan ini: -

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

Semoga berhasil :)

dev
sumber
Terima kasih banyak atas balasan Anda tetapi itu tidak berhasil :(
Jeff
Harap dicatat jika Anda mengatur query_var untuk palsu saat mendaftar taksonomi kustom, Anda harus mengubah parameter untuk: wp-json / wp / v2 / tulisan / taksonomi = pekerjaan-jenis & jangka = manajer (yang hanya sebuah contoh)
dev
Terima kasih tetapi itu juga tidak berhasil. Mungkinkah ada masalah dengan cara saya mendaftarkan jenis posting khusus? Saya telah memperbarui pertanyaan, Jika Anda dapat melihatnya, saya akan sangat berterima kasih
Jeff
Ya baru saja memeriksa jawaban yang diperbarui
dev
0

Oke, inilah jawaban lengkap saya: -

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

Anda juga harus mendaftarkan taksonomi saat mendaftarkan pos kustom.

Setelah ini permintaannya adalah:

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

Semoga ini bisa membantu Anda :)

dev
sumber
Terima kasih banyak atas usaha Anda dalam hal ini tetapi sayangnya itu tidak berhasil. Saya yakin saya cukup dekat tetapi saya tidak mengerti apa masalahnya. Terima kasih lagi
Jeff