WP REST API पोस्ट प्रकार से 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

बस अगले parmater को function register_post_type में जोड़ें, यह 'menu_position'parameter' के पहले हो सकता है। 'show_in_rest' => सच है

यहाँ छवि विवरण दर्ज करें

यदि आप अपने पोस्टपाइप को पंजीकृत करने के लिए एक प्लगइन का उपयोग कर रहे हैं तो आप अगले कोड का उपयोग कर सकते हैं:

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अपने पोस्ट प्रकार के स्लग के लिए बदलें और 'क्लैसी' आपका मार्ग होगा। mydomain.com/wp-json/wp/v2/clasi


धन्यवाद, यह लगभग मेरी समस्या हल हो गई! मुझे अब उस विशिष्ट पोस्ट प्रकार से कुछ पोस्ट मिलते हैं, लेकिन उनमें से सभी प्रकट नहीं होते हैं और साथ ही उनका डेटा पूरा नहीं होता है, उदाहरण के लिए श्रेणी सूचीबद्ध नहीं है और मुझे सूचीबद्ध होने के लिए उन्नत कस्टम फ़ील्ड की भी आवश्यकता है (WP REST API v1.2.3 में) मैं ACF को प्रदर्शित करने में कामयाब रहा)। इस पर आपकी मदद के लिए धन्यवाद
जेफ

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 

मुझे भरोसा है ये काम करेगा :)


आपके उत्तर के लिए बहुत बहुत धन्यवाद, लेकिन यह काम नहीं किया :(
जेफ

कृपया ध्यान दें कि यदि आप कस्टम टैक्सोनॉमी को पंजीकृत करते समय क्वेरी_वर को गलत पर सेट करते हैं, तो आपको पैरामीटर बदलने की आवश्यकता होगी: wp-json / wp / v2 / posts /? Taxonomy = job-type & term = manager (इसका सिर्फ एक उदाहरण)
dev

धन्यवाद, लेकिन यह भी काम नहीं किया। क्या कस्टम पोस्ट प्रकार को पंजीकृत करने के साथ कोई समस्या हो सकती है? मैंने सवाल को अपडेट किया है, अगर आप इस पर एक नज़र डाल सकते हैं तो मैं बहुत आभारी रहूंगा
जेफ़

हां, बस अद्यतन उत्तर की जाँच करें
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

आशा है कि यह आपकी मदद कर सकता है :)


इस पर आपके प्रयास के लिए एक लाख धन्यवाद, लेकिन दुर्भाग्य से यह भी काम नहीं किया। मुझे यकीन है कि मैं बहुत करीब हूं, लेकिन मुझे वह नहीं मिला, जो मुद्दा हो सकता है। फिर से धन्यवाद
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.