使用WP REST API获取自定义帖子

时间:2018-08-05 13:14:54

标签: wordpress wordpress-rest-api

我正在尝试获取自定义帖子类型,但是我似乎找不到任何解决方案。 WP REST API文档仅返回博客文章。

  

注意:我正在使用Dooplay主题

     

下面的代码在文件 tipo.php

中      

目录: inc>包含>系列

if( ! function_exists( 'doo_series' ) ) {
    function doo_series() {
        $labels = array(
            'name'                => _x('TV Shows', 'Post Type General Name','mtms'),
            'singular_name'       => _x('TV Show', 'Post Type Singular Name','mtms'),
            'menu_name'           => __d('TV Shows %%PENDING_COUNT_TV%%'),
            'name_admin_bar'      => __d('TV Shows'),
            'all_items'           => __d('TV Shows'),
        );
        $rewrite = array(
            'slug'                => get_option('dt_tvshows_slug','tvshows'),
            'with_front'          => true,
            'pages'               => true,
            'feeds'               => true,
        );
        $args = array(
            'label'               => __d('TV Show'),
            'description'         => __d('TV series manage'),
            'labels'              => $labels,
            'supports'            => array('title', 'editor','comments','thumbnail','author'),
            'taxonomies'          => array('genres'),
            'hierarchical'        => false,
            'public'              => true,
            'show_ui'             => true,
            'show_in_menu'        => true,
            'menu_position'       => 5,
            'menu_icon'           => 'dashicons-welcome-view-site',
            'show_in_admin_bar'   => true,
            'show_in_nav_menus'   => false,
            'can_export'          => true,
            'has_archive'         => true,
            'exclude_from_search' => false,
            'publicly_queryable'  => true,
            'rewrite'             => $rewrite,
            'capability_type'     => 'post',
        );
        register_post_type('tvshows', $args );
    }
    add_action('init', 'doo_series', 0 );
    get_template_part('inc/includes/series/metabox');
}

1 个答案:

答案 0 :(得分:0)

比较
register_post_type( 'post', array(
    'labels' => array(
        'name_admin_bar' => _x( 'Post', 'add new from admin bar' ),
    ),
    'public'  => true,
    '_builtin' => true, /* internal use only. don't use this when registering your own post type. */
    '_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
    'capability_type' => 'post',
    'map_meta_cap' => true,
    'menu_position' => 5,
    'hierarchical' => false,
    'rewrite' => false,
    'query_var' => false,
    'delete_with_user' => true,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    'show_in_rest' => true,
    'rest_base' => 'posts',
    'rest_controller_class' => 'WP_REST_Posts_Controller',
) );

会注册内置帖子类型的帖子。观察最后三个字段。必须设置这些字段以使帖子类型可以通过REST访问。

附录

实际上,仅需要'show_in_rest',因为WordPress具有其他两个默认值。另外,如果开发人员为自定义帖子类型编写了自己的WP_REST_Controller而不是使用内置的WP_REST_Posts_Controller,那么即使这不是必需的,因为他自己的WP_REST_Controller可以通过其他方式调用register_rest_route()函数。