- 18, Oct 2024
- #1
У меня зарегистрирован пользовательский тип сообщения, и при регистрации я использую...
mdjm_template_edit: Has Cap edit_mdjm_template: Does not have Cap read_mdjm_template: Does not have Cap delete_mdjm_template: Does not have Cap edit_mdjm_templates: Has Cap edit_others_mdjm_templates: Has Cap publish_mdjm_templates: Has Cap read_private_mdjm_templates: Has Cap edit_published_mdjm_templates: Has Cap edit_private_mdjm_templates: Has Cap delete_mdjm_templates: Has Cap delete_others_mdjm_templates: Has Cap delete_private_mdjm_templates: Has Cap delete_published_mdjm_templates: Has Cap
для регистрации типа сообщения.
С помощью редактора ролей пользователя я подтвердил, что у моего пользователя есть все ограничения *_mdjm_template, но он не может создать новое сообщение. Единственное ограничение, которое есть у этой роли, — это «чтение». Кнопка «Новое сообщение» отображается, но при нажатии на нее отображается сообщение «У вас недостаточно прав для доступа к этой странице». сообщение.
Все остальные функции этого типа сообщений работают нормально. т. е. пользователь может видеть все сообщения и редактировать их. Только не создавать новых.
Что я пропустил?
РЕДАКТИРОВАТЬ
Я добавляю ограничения к роли пользователя, созданной во время активации плагина, используя приведенное ниже...
current_user_can( '$cap' )
Вывод ограничений пользователя в журнал ошибок при попытке создать новый пост*
Вошёл в систему как пользователь с соответствующей ролью и используя $role = get_role( 'my_role' );
$caps = array(
'mdjm_template_edit' => true, 'edit_mdjm_template' => true,
'read_mdjm_template' => true, 'delete_mdjm_template' => true, 'edit_mdjm_templates' => true,
'edit_others_mdjm_templates' => true, 'publish_mdjm_templates' => true, 'read_private_mdjm_templates' => true,
'edit_published_mdjm_templates' => true, 'edit_private_mdjm_templates' => true, 'delete_mdjm_templates' => true,
'delete_others_mdjm_templates' => true, 'delete_private_mdjm_templates' => true,
'delete_published_mdjm_templates' => true
);
foreach( $caps as $cap => $val ) {
if( empty( $val ) )
$role->remove_cap( $cap );
else
$role->add_cap( $cap );
}
if( !post_type_exists( 'email_template' ) ) {
register_post_type( 'email_template',
array(
'labels' => array(
'name' => _x( 'Email Templates', 'post type general name', 'mobile-dj-manager' ),
'singular_name' => _x( 'Email Template', 'post type singular name', 'mobile-dj-manager' ),
'menu_name' => _x( 'Email Templates', 'admin menu', 'mobile-dj-manager' ),
'name_admin_bar' => _x( 'Email Template', 'add new on admin bar', 'mobile-dj-manager' ),
'add_new' => __( 'Add Template', 'mobile-dj-manager' ),
'add_new_item' => __( 'Add New Template', 'mobile-dj-manager' ),
'new_item' => __( 'New Template', 'mobile-dj-manager' ),
'edit_item' => __( 'Edit Template', 'mobile-dj-manager' ),
'view_item' => __( 'View Template', 'mobile-dj-manager' ),
'all_items' => __( 'All Templates', 'mobile-dj-manager' ),
'search_items' => __( 'Search Templates', 'mobile-dj-manager' ),
'not_found' => __( 'No templates found.', 'mobile-dj-manager' ),
'not_found_in_trash' => __( 'No templates found in Trash.', 'mobile-dj-manager' ) ),
'description' => __( 'Email Templates for the Mobile DJ Manager plugin', 'mobile-dj-manager' ),
'public' => false,
'exclude_from_search' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => 'edit.php?post_type=email_template',
'show_in_admin_bar' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'email-template' ),
'capability_type' => 'mdjm_template',
'capabilities' => array(
'edit_post' => 'edit_mdjm_template',
'read_post' => 'read_mdjm_template',
'delete_post' => 'delete_mdjm_template',
'edit_posts' => 'edit_mdjm_templates',
'edit_others_posts' => 'edit_others_mdjm_templates',
'publish_posts' => 'publish_mdjm_templates',
'read_private_posts' => 'read_private_mdjm_templates'
),
'map_meta_cap' => true,
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'revisions' ) ) );
}
#custom-post-types #capabilities