function users_dashboard() {
$current_user = wp_get_current_user();
$role_name = $current_user->roles[0];
switch ($role_name) {
case 'ae_manager': manager_navigation(); break;
}
}
add_action( 'admin_init', 'users_dashboard' );
function manager_navigation() {
global $menu;
remove_menu_page( 'index.php' );
//remove_menu_page( 'edit.php' );
//remove_menu_page( 'edit.php?post_type=page' );
remove_menu_page( 'edit-comments.php' );
remove_menu_page( 'themes.php' );
remove_menu_page( 'plugins.php' );
remove_menu_page( 'users.php' );
remove_menu_page( 'tools.php' );
remove_menu_page( 'options-general.php' );
remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal');
}
// Регистрация Объектов недвижимости
if ( ! function_exists('estate_post_type') ) {
function estate_post_type() {
$labels = array(
'name' => _x( 'Объекты недвижимости', 'estate' ),
'singular_name' => _x( 'Объекты', 'estate' ),
'menu_name' => __( 'Объекты недвижимости', 'estate' ),
'name_admin_bar' => __( 'Объект', 'estate' ),
'archives' => __( 'Архивные объекты', 'estate' ),
'attributes' => __( 'Аттрибуты Объекта', 'estate' ),
'parent_item_colon' => __( 'Главный Объект:', 'estate' ),
'all_items' => __( 'Все Объекты', 'estate' ),
'add_new_item' => __( 'Добавить новый объект', 'estate' ),
'add_new' => __( 'Добавить новый объект', 'estate' ),
'new_item' => __( 'Новый Объект', 'estate' ),
'edit_item' => __( 'Редактировать Объект', 'estate' ),
'update_item' => __( 'Обновиить Объект', 'estate' ),
'view_item' => __( 'Просмотеть Объект', 'estate' ),
'view_items' => __( 'Просмотреть Объект', 'estate' ),
'search_items' => __( 'Найти Объект', 'estate' ),
'not_found' => __( 'Объектов нахрен нет', 'estate' ),
'not_found_in_trash' => __( 'Корзина Объектов пуста', 'estate' ),
'featured_image' => __( 'Изображение Объекта', 'estate' ),
'set_featured_image' => __( 'Установить изображение Объекта', 'estate' ),
'remove_featured_image' => __( 'Удалить изображение Объекта', 'estate' ),
'use_featured_image' => __( 'Все изображения Объекта', 'estate' ),
'insert_into_item' => __( 'Добавить в Объект', 'estate' ),
'uploaded_to_this_item' => __( 'Прикрепить к этому Объекту', 'estate' ),
'items_list' => __( 'Объект-лист', 'estate' ),
'items_list_navigation' => __( 'Объект-лист', 'estate' ),
'filter_items_list' => __( 'Фильтр Объектов', 'estate' ),
);
$args = array(
'label' => __( 'Объекты', 'estate' ),
'description' => __( 'Объекты недвижимости.', 'estate' ),
'labels' => $labels,
'supports' => array( 'title', /*'editor',*/ 'revisions', 'thumbnail' ),
'taxonomies' => array( 'estate_type', 'estate_operation', 'estate_district', 'estate_building_type', 'estate_class'),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-home',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => true,
'publicly_queryable' => true,
'capability_type' => 'page',
);
register_post_type( 'estate', $args );
}
add_action( 'init', 'estate_post_type', 0 );
}
/* Роль: Менеджер */
register_activation_hook( __FILE__, 'create_ae_manager_role' );
function create_ae_manager_role(){
$new_role = add_role('ae_manager', 'Менеджер агенства', array(
'upload_files' => true,
'edit_posts' => true,
'edit_published_posts' => true,
'publish_posts' => true,
'read' => true,
'delete_posts' => false,
'delete_published_posts' => true,
'moderate_comments'=> true,
)
);
}
register_deactivation_hook( __FILE__, 'delete_manager_role' );
function delete_manager_role(){ remove_role( 'ae_manager' ); }
'capability_type' => 'page',
. Это генерит capabilities вида "edit_pages", "publish_pages" и тд. А при создании роли вы указали "edit_posts", "publish_posts". Capabilities разные. Please be aware that this would not prevent a user from accessing these screens directly. Removing a menu does not replace the need to filter a user's permissions as appropriate.
function es_event_types_taxonomy() {
$labels = array(
'name' => 'Тип',
'singular_name' => 'Тип мероприятия',
'menu_name' => 'Тип мероприятия',
'all_items' => 'Все типы мероприятий',
'parent_item' => 'Главный тип мероприятия',
'parent_item_colon' => 'Parent Item:',
'new_item_name' => 'Название нового типа мероприятий',
'add_new_item' => 'Добавить тип мероприятия',
'edit_item' => 'Редактировать тип',
'update_item' => 'Обновить тип',
'view_item' => 'Смотреть тип',
'separate_items_with_commas' => 'Добавление через запятую',
'add_or_remove_items' => 'Добавить или удалить тип мероприятий',
'choose_from_most_used' => 'Выбрать из наиболее популярных',
'popular_items' => 'Популярные типы',
'search_items' => 'Найти тип',
'not_found' => 'Тип не найден',
'no_terms' => 'Типов мероприятий нет.',
'items_list' => 'Список типов меропрриятий',
'items_list_navigation' => 'Items list navigation',
);
$es_type_capabilities = array(
'manage_terms' => 'manage_es_event_type',
'edit_terms' => 'edit_es_event_type',
'delete_terms' => 'delete_es_event_type',
'assign_terms' => 'assign_es_event_type',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
'show_in_quick_edit' => true,
'meta_box_cb' => true,
'capabilities' => $es_type_capabilities,
);
register_taxonomy( 'es_event_type', array( 'es_event' ), $args );
}
add_action( 'init', 'es_event_types_taxonomy', 0 );
/* В права роли соответственно добавил
'manage_es_event_type' => true,
'edit_es_event_type' => true,
'delete_es_event_type' => true,
'assign_es_event_type' => true,
*/