Конфликт между возможностями и видимостью меню с пользовательскими типами сообщений

Надеюсь, это не просто результат опечатки на моем конце, но если это так, я не вижу этого.

Я добавляю персонализированный тип сообщения на свой сайт. На самом деле я добавляю три. Два из них я пытаюсь установить пользовательские возможности для нового класса пользователей.

В моей панели администратора я не могу заставить это зарегистрироваться при добавлении функционального блока кода ниже в файл functions.php моей темы. Тем не менее, я комментирую все связанные с возможностями переменные, новый CPT отлично показывает интерфейс администратора. Если я раскомментирую любую переменную, связанную с возможностями, CPT не отображается в моем меню администратора.

Есть еще одна небольшая информация. У меня есть тестовая страница, на которой я запускаю дамп var в свойствах настраиваемого типа сообщения, чтобы узнать, регистрируется ли он. Когда я регистрирую CPT с установленными возможностями, в то время как он не отображается в виде элемента меню или не позволяет мне получить доступ к редактору для этого конкретного CPT (поэтому он, кажется, не установлен), он все же отображается в моем дампе var И возможности устанавливаются для этого конкретного CPT.

Вот мой код:

function nb_register_assignment_CPT() { /* Assignment CPT */ $nb_assignment_labels = array( 'name' => _x('Assignments', 'post type general name', 'doula'), 'singular_name' => _x('Assignment', 'post type singular name', 'doula'), 'add_new' => _x('Add New', 'assignment', 'doula'), 'add_new_item' => __('Add New Assignment', 'doula'), 'edit_item' => __('Edit Assignment', 'doula'), 'new_item' => __('New Assignment', 'doula'), 'all_items' => __('All Assignments', 'doula'), 'view_item' => __('View Assignment', 'doula'), 'search_items' => __('Search Assignments', 'doula'), 'not_found' => __('No assignments found', 'doula'), 'not_found_in_trash' => __('No assignments found in Trash', 'doula'), 'parent_item_colon' => '', 'menu_name' => __('Assignments', 'doula') ); $nb_assignment_args = array( 'labels' => $nb_assignment_labels, 'public' => true, 'publicly_queryable' => true, 'query_var' => true, 'rewrite' => array( 'slug' => _x( 'assignment', 'URL slug', 'doula' ) ), 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 52, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ), 'capability_type' => array( 'assignment', 'assignments' ), 'capabilities' => array( 'publish_posts' => 'publish_assignments', 'edit_posts' => 'edit_assignments', 'edit_others_posts' => 'edit_others_assignments', 'delete_posts' => 'delete_assignments', 'delete_others_posts' => 'delete_others_assignments', 'read_private_posts' => 'read_private_assignments', 'edit_post' => 'edit_assignment', 'delete_post' => 'delete_assignment', 'read_post' => 'read_assignment' ), 'map_meta_cap'=> true ); register_post_type('assignment', $nb_assignment_args); } 

Спасибо, что посмотрели.

Вероятно, вы не можете видеть новые элементы CPT в своем меню, потому что вы указали, что им требуются определенные колпачки, но вы не назначили те же самые кепки какой-либо роли, включая ваши собственные.

Добавьте в свой код следующее:

  function my_cpt_add_caps() { foreach ( array( 'administrator' ) as $role_name ) { $role = get_role( $role_name ); $role->add_cap( 'edit_assignments' ); // add selected other caps here } } register_activation_hook( __FILE__, 'my_cpt_add_caps' ); 

При активации плагина мы назначаем ваши новые кепки роли администратора. Теперь ваши пункты меню CPT должны быть доступны в меню. Кроме того, только теперь плагины, такие как члены, видят эти новые колпачки, так как кепка должна быть назначена какой-то роли, прежде чем она будет подтверждена.

Поскольку вы используете capability_type в регистрации CPT, вы можете отказаться от массива capabilities , поскольку WP будет работать сам.