ডাব্লুপি REST এপিআই পোস্টের ধরণ থেকে পোস্টগুলি আনতে


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

এর সাথে যে কোনও সহায়তা সত্যই প্রশংসিত is

উত্তর:


18

ফাংশন রেজিস্টার_পোস্ট_প্রকারের মধ্যে কেবল পরবর্তী প্যারামিটারটি যুক্ত করুন, এটি 'মেনু_পজিশন' পরিমাপকের আগে হতে পারে। '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/anالنo

আপনি পরবর্তী কোডটি ব্যবহার করে একটি নতুন বেসও নিবন্ধভুক্ত করতে পারেন:

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 এ আমি এসিএফ উপস্থিত হতে পরিচালিত)। এতে আপনার সহায়তার জন্য ধন্যবাদ
জেফ

4

সংস্করণ 2-তে কাস্টম পোস্টের প্রকারগুলি প্রদর্শন করতে, আপনার 'show_in_rest' => trueরেজিস্টার_পোস্ট_প্রকার ফাংশন যুক্তি যুক্ত করতে হবে, তারপরে সেই কাস্টম পোস্ট টাইপের আপনার পোস্টগুলি শেষ পয়েন্টে উপলব্ধ হবে: wp-json / wp / v2 / আপনার কাস্টম-পোস্ট-টাইপ

সূত্র: http://scottbolinger.com/custom-post-tyype-wp-api-v2/


0

আপনার এটি ব্যবহার করা উচিত: -

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

আশা করি এটা কাজ করবে :)


আপনার জবাবের জন্য আপনাকে অনেক ধন্যবাদ কিন্তু এটি কার্যকর হয়নি :(
জেফ

দয়া করে নোট করুন আপনি যদি কাস্টম ওয়ার্ডপোমিটি রেজিস্ট্রেশন করার সময় ক্যোয়ারী_ভারটিকে মিথ্যা হিসাবে সেট করে থাকেন তবে আপনাকে প্যারামিটারগুলি পরিবর্তন করতে হবে: wp-json / wp / v2 / পোষ্টস /? ট্যাক্সনমি = জব-টাইপ এবং টার্ম = ম্যানেজার (এটির উদাহরণ)
দেব

আপনাকে ধন্যবাদ তবে এটি কার্যকর হয়নি। আমি কাস্টম পোস্টের ধরণটি কীভাবে নিবন্ধভুক্ত করেছি তাতে কোনও সমস্যা হতে পারে? আমি প্রশ্নটি আপডেট করেছি, আপনি যদি এটি একবার দেখে নিতে পারেন তবে আমি খুব কৃতজ্ঞ হব
জেফ

হ্যাঁ সবেমাত্র আপডেট উত্তরটি পরীক্ষা করেছেন
দেব

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

আশা করি এটি আপনাকে সহায়তা করতে পারে :)


এই বিষয়ে আপনার প্রচেষ্টার জন্য আপনাকে এক মিলিয়ন ধন্যবাদ কিন্তু দুর্ভাগ্যক্রমে এটি কার্যকর হয়নি। আমি নিশ্চিত যে আমি বেশ কাছাকাছি কিন্তু সমস্যাটি কী হতে পারে তা পাই না। আপনাকে আবারও ধন্যবাদ
জেফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.