6

WordPress 5.2.3 サイトを実行していますが、管理パネルで問題が発生しています。

私はカスタムロールを持っています、それを呼びましょうlibrarian、そしてカスタム投稿タイプはそれを呼びましょうbook

librariana が a を編集できるbookが、新しいものを作成できないようにしたい。

別の質問 ( WordPress: カスタム投稿タイプで「新規追加」を無効にする) とWordPress ドキュメントのアドバイスに従って、次のコードになりました。

// Custom post type.
register_post_type('book',
    array(
        'labels'                => array(
            'name' => __( 'book' ),
            'singular_name' => __( 'Book' )
        ),
        'capability_type'       => array('book', 'books'),
        'capabilities'          => array(
            'create_posts' => 'do_not_allow' // <-- The important bit.
        ),
        'map_meta_cap'          => true,
        'description'           => 'Book full of pages',
        'exclude_from_search'   => true,
        'publicly_queryable'    => false,
        'show_in_nav_menus'     => false,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'show_in_rest'          => true,
        'menu_icon'             => 'dashicons-location',
        'menu_position'         => 5,
        'supports'              => array('title', 'revisions')
    ));
// Custom role.
add_role('librarian', 'Librarian', array(
    'read'                  => true,
    'edit_books'            => true,
    'edit_published_books'  => true
));

edit.php?post_type=bookとしてアクセスしたときに、編集用librariranのリストが表示されることを期待していましたが、[新規追加] ボタンが表示されませんでした。ただし、実際に得られるのは次のような応答です。books403

このページへのアクセスは許可されていません。

以下の場合は、WordPress のバグではないかと思います。

  • edit.php?post_type=bookとしてアクセスすると、必要に応じて [新規追加] ボタンadministratorのないリスト ページが表示されます。
  • librarian役割に機能を与えると、必要に応じて [新規追加edit_posts] ボタンのないリスト ページが表示されます (ただし、機能を与えたくありません!)。edit_posts

これらは、一般的に設定されたカスタム投稿タイプでは問題ではないと私に思わせます.

  • タイプ登録'create_posts' => 'do_not_allow'からを削除すると、リスト ページが表示されますが、[新規追加] ボタンが含まれてますbooklibrarian

これは、一般的に設定されたカスタム ロールでは問題ないと思われます。

以前にこの問題に遭遇した人はいますか? 構成から何かを逃したことがありますか? または、簡単なパッチまたは回避策はありますか?

どんな助けでも大歓迎です!ありがとう。

4

3 に答える 3