如何使用WP REST API从自定义帖子类型中获取数据

时间:2018-01-31 07:23:13

标签: wordpress rest

我想使用WP REST API从我的自定义帖子类型中获取数据。

我的自定义帖子类型为“结果”,我尝试使用此参数。

http://ejobbox.com/wp-json/wp/v2/result/?

http://ejobbox.com/wp-json/wp/v2/result/?per_page=10

以及

http://ejobbox.com/wp-json/wp/v2/posts/?post_type=result

但是我无法从我的自定义Post类型中获取数据。

我还将此添加到我的自定义帖子类型

'show_in_rest'=> true,
'rest_base'          => 'result',
'rest_controller_class' => 'WP_REST_Posts_Controller',

我仍然无法得到结果。

所以请你能告诉我哪里有错,我该怎样做才能从我的自定义帖子类型中获取数据。 请给我一些建议。

我的Function.php(自定义帖子类型)代码在这里:

function codexres_custom_init() {
    $args = array(
      'public' => true,
      'label'  => 'Result'
    );
    register_post_type( 'result', $args );
}
add_action( 'init', 'codexres_custom_init' );


function codex_result_init() {
    $labels = array(
        'name'               => _x( 'Result', 'post type general name', 'your-plugin-textdomain' ),
        'singular_name'      => _x( 'Result', 'post type singular name', 'your-plugin-textdomain' ),
        'menu_name'          => _x( 'Result', 'admin menu', 'your-plugin-textdomain' ),
        'name_admin_bar'     => _x( 'Result', 'add new on admin bar', 'your-plugin-textdomain' ),
        'add_new'            => _x( 'Add New', 'Result', 'your-plugin-textdomain' ),
        'add_new_item'       => __( 'Add New Result', 'your-plugin-textdomain' ),
        'new_item'           => __( 'New Result', 'your-plugin-textdomain' ),

        'edit_item'          => __( 'Edit Result', 'your-plugin-textdomain' ),

        'view_item'          => __( 'View Result', 'your-plugin-textdomain' ),

        'all_items'          => __( 'All Result', 'your-plugin-textdomain' ),

        'search_items'       => __( 'Search Result', 'your-plugin-textdomain' ),

        'parent_item_colon'  => __( 'Parent Result:', 'your-plugin-textdomain' ),
        'not_found'          => __( 'No Result found.', 'your-plugin-textdomain' ),
        'not_found_in_trash' => __( 'No Result found in Trash.', 'your-plugin-textdomain' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => __( 'Description.', 'your-plugin-textdomain' ),
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'show_in_rest'       => true,
        'query_var'          => true,
        'menu_icon'          => 'dashicons-admin-users',
        'rewrite' => array( 'slug' => __('result', 'result')),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'rest_base'          => 'result',
        'rest_controller_class' => 'WP_REST_Posts_Controller',
        'menu_position'      => 5,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
        'taxonomies'       => array('result','category', 'post_tag')

    );

    register_post_type( 'result', $args );
}

4 个答案:

答案 0 :(得分:1)

如果有人正在使用“自定义帖子”类型的UI 插件-您需要进入帖子类型设置,并通过UI进行操作。

enter image description here

答案 1 :(得分:0)

你做错了什么:

您有两个函数codexres_custom_initcodex_result_init并且这两个函数都注册了相同的帖子类型,这是不需要的。虽然对于第二个函数codex_result_init,但您没有将其添加到add_action('init','function_name')。因此,在您的情况下,函数codexres_custom_init不是必需的。有关自定义帖子类型创建的进一步说明,请参阅此document

Rest api for custom post type

试试这个,我能看到的是,你两次注册结果帖子类型。虽然你没有初始化主要的。

function codex_result_init() {
$labels = array(
    'name'               => _x( 'Result', 'post type general name', 'your-plugin-textdomain' ),
    'singular_name'      => _x( 'Result', 'post type singular name', 'your-plugin-textdomain' ),
    'menu_name'          => _x( 'Result', 'admin menu', 'your-plugin-textdomain' ),
    'name_admin_bar'     => _x( 'Result', 'add new on admin bar', 'your-plugin-textdomain' ),
    'add_new'            => _x( 'Add New', 'Result', 'your-plugin-textdomain' ),
    'add_new_item'       => __( 'Add New Result', 'your-plugin-textdomain' ),
    'new_item'           => __( 'New Result', 'your-plugin-textdomain' ),

    'edit_item'          => __( 'Edit Result', 'your-plugin-textdomain' ),

    'view_item'          => __( 'View Result', 'your-plugin-textdomain' ),

    'all_items'          => __( 'All Result', 'your-plugin-textdomain' ),

    'search_items'       => __( 'Search Result', 'your-plugin-textdomain' ),

    'parent_item_colon'  => __( 'Parent Result:', 'your-plugin-textdomain' ),
    'not_found'          => __( 'No Result found.', 'your-plugin-textdomain' ),
    'not_found_in_trash' => __( 'No Result found in Trash.', 'your-plugin-textdomain' )
);

$args = array(
    'labels'             => $labels,
    'description'        => __( 'Description.', 'your-plugin-textdomain' ),
    'public'             => true,
    'publicly_queryable' => true,
    'show_ui'            => true,
    'show_in_menu'       => true,
    'show_in_rest'       => true,
    'query_var'          => true,
    'menu_icon'          => 'dashicons-admin-users',
    'rewrite' => array( 'slug' => __('result', 'result')),
    'capability_type'    => 'post',
    'has_archive'        => true,
    'hierarchical'       => false,
    'rest_base'          => 'result',
    'rest_controller_class' => 'WP_REST_Posts_Controller',
    'menu_position'      => 5,
    'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
    'taxonomies'       => array('result','category', 'post_tag')

);

register_post_type( 'result', $args );
}
  add_action( 'init', 'codex_result_init' );

只需删除以下代码:

function codexres_custom_init() {
    $args = array(
      'public' => true,
      'label'  => 'Result'
    );
    register_post_type( 'result', $args );
}
add_action( 'init', 'codexres_custom_init' );

不要包含这个你。

答案 2 :(得分:0)

使用此

//add this to your functions.php file in your theme folder
function sb_add_cpts_to_api( $args, $post_type ) {
if ( 'result' === $post_type ) {
$args['show_in_rest'] = true;
}
return $args;
}
add_filter( 'register_post_type_args', 'sb_add_cpts_to_api', 10, 2 );

我从here那里得到了

它像伏都教一样工作

答案 3 :(得分:0)

这就是我使用 REST API 从 WordPress 中的自定义帖子类型获取数据的方式。

http://ejobbox.com/wp-json/wp/v2/customposttype 这将返回自定义帖子类型条目的前 10 个结果。