Я делаю пользовательский тип поста 'project'. Я добавил две роли пользователя «Сотрудник» и «Менеджер проекта». Я хочу, чтобы менеджер проекта создал любой проект и назначил его сотруднику. Я использовал WordPress личное сообщение для этой задачи. Я создал новый проект в личном кабинете менеджера проектов как личное сообщение. По умолчанию я не добавил возможность доступа к личному сообщению в роли сотрудника. В опции редактирования проекта у меня есть мета-поле, в которое я добавил имя пользователя сотрудника, который должен быть назначен. Проблема в том, что я могу добавить возможность в профиль сотрудника, но сотрудник все еще не может получить доступ к личным сообщениям. Пожалуйста помоги. Любой другой сценарий для решения этой проблемы также будет приемлемым.
Код для настройки Возможности сотрудника
$dasay=get_user_by('login',"dasay");
$user = new WP_User($dasay);
$user->add_cap( 'see_private_project' );
$user->add_cap( 'see_private_projects' );
$user->add_cap('edit_private_projects');
$user->add_cap( 'edit_private_project' );
$user->add_cap( 'edit_others_post' );
$user->add_cap( 'edit_others_posts' );
Код для установки пользовательских ролей
function acropolis_add_roles() {
add_role( 'employee', 'Employee', array(
) );
add_role( 'project_manager', 'Project Manager', array(
) );
}
register_activation_hook(__FILE__, 'acropolis_add_roles' );
Код для настройки проекта тип записи
function acropolis_project_post_type(){
// define an array of labels
$post_type_labels = array(
'name' => __( 'Projects' ),
'singular_name' => __( 'Project' ),
'add_new_item' => __( 'Add New Project' ),
'edit_item' => __( 'Edit Project' ),
'new_item' => __( 'New Project' ),
'view_item' => __( 'View Project' ),
'view_items' => __( 'View Projects' ),
'not_found' => __( 'No Projects found' ),
'not_found_in_trash' => __( 'No Projects found in Thrash' ),
'all_items' => __( 'All Projects' ),
'archives' => __( 'Project Archives' ),
'insert_into_item' => __( 'Insert into Project' ),
'uploaded_to_this_item' => __( 'Uploaded to this Project' )
);
// define an array of arguments
$post_type_args = array(
'labels' => $post_type_labels,
'public' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-media-document',
'capability_type' => array('project','projects'),
'map_meta_cap' => true,
'hierarchical' => false,
'supports' => array( 'title', 'editor', 'author', 'excerpt', 'custom-fields', 'comments' ),
'has_archive' => true,
);
register_post_type( 'project', $post_type_args );
}
add_action( 'init', 'acropolis_project_post_type' );
Код для добавления возможностей в роли
$employee = get_role( 'employee' );
$employee->add_cap( 'read_project' );
$employee->add_cap( 'edit_project' );
$employee->add_cap( 'edit_projects' );