WordPress REST API 创建自定义帖子类型不起作用

我正在尝试使用 WordPress REST API 创建自定义帖子。问题是我可以在以管理员身份登录时创建自定义帖子。但是,当我在以自定义角色“new_role”身份登录时尝试创建帖子时,API 会给出以下错误响应。


{

    "code": "rest_cannot_update",

    "message": "Sorry, you are not allowed to edit the letter_intro custom field.",

    "data": {

        "key": "letter_intro",

        "status": 403

    }

}

并且在没有post_meta值的情况下创建了帖子。我尝试通过在 function.php 中添加以下代码来添加功能


add_action('rest_api_init', function () {

$new_role = get_role('new_role');

$new_role->add_cap('edit_post', true);

$new_role->add_cap('edit_post_meta', true);

...

...

但它不起作用。


慕妹3146593
浏览 176回答 1
1回答

守着星空守着你

我能够通过使用下面的代码来解决它。$args = array(            'labels' => $labels,            'description' => 'Custom post',            'public' => true,            'menu_position' => 5,            'supports' => array('title', 'editor', 'thumbnail', 'author', 'excerpt', 'comments', 'custom-fields'),            'has_archive' => true,            'show_in_rest' => true,            'rest_base'    => 'letters',            'capabilities' => array(        'edit_post' => 'edit_letter',        'edit_posts' => 'edit_letters',        'publish_posts' => 'publish_letters',        'read_post' => 'read_letter',        'delete_post' => 'delete_letter'    ),        );        register_post_type('letter', $args);然后将这些功能添加到所需的角色。function new_caps(){     $new_role = get_role('new_role');     $new_role->add_cap('edit_letter', true);     $new_role->add_cap('edit_letters', true);     $new_role->add_cap('publish_letters', true);     $new_role->add_cap('read_letter', true);     $new_role->add_cap('delete_letter', true);     $admins = get_role( 'administrator' );     $admins->add_cap('edit_letter', true);     $admins->add_cap('edit_letters', true);     $admins->add_cap('publish_letters', true);     $admins->add_cap('read_letter', true);     $admins->add_cap('delete_letter', true);}add_action('init', 'new_caps', 11);
打开App,查看更多内容
随时随地看视频慕课网APP