@Cool94

Как лучше реализовать личный кабинет для менеджеров проекта?

Добрый день. Нужно реализовать личный кабинет для сайта, где будут регистрироваться менеджеры и вписывать данные о приведенных ими клиентами (ФИО, УНП, ИНН и т.д.) А модератор или главный менеджер должен иметь возможность просмотреть некоторую статистику по каждому менеджеру.
Может есть какой плагин под WP, чтобы хотя бы базово такое реализовать?
Или как лучше тогда сделать такое?
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 3
orlov0562
@orlov0562
I'm cool!
Плагин не знаю.
Я бы сделал каждому менеджеру/модератору свою роль и права доступа (capabilities) и от них бы построил интерфейсы где пользователи с определенной ролью могут делать определенные действия.
Ответ написан
Комментировать
@vardoLP
Ват ю сэй эбаут май мама?!
на самом деле полно плагинов для авторизации юзеров. Ну а там уже проверяете юзера и показываете ему нужный раздел сайта.
Ответ написан
Комментировать
san_jorich
@san_jorich
Творческий кодер
Лучший плагин в Вашем случае - написанный Вами под Ваши задачи.
Давайте начнем с разбора что к чему:
Клиенты - Custom Post Type 'agency_clients' с произвольными полями ФИО ИНН УНП ОКВЕД ХЗ итд итп.
Операции с Клиентами 'agency_operation' -
Custom Post Type
if ( ! function_exists('agency_operations_post_type') ) {

function agency_operations_post_type() {

    $operations_labels = array(
        'name'                  => _x( 'Логи операций', 'agency_operations' ),
        'singular_name'         => _x( 'Логи операций', 'agency_operations' ),
        'menu_name'             => __( 'Логи операций', 'agency_operations' ),
        'name_admin_bar'        => __( 'Операция', 'agency_operations' ),
        'archives'              => __( 'Завершенные операции', 'agency_operations' ),
        'attributes'            => __( 'Аттрибуты операции', 'agency_operations' ),
        'parent_item_colon'     => __( 'Главная операция:', 'agency_operations' ),
        'all_items'             => __( 'Все Операции', 'agency_operations' ),
        'add_new_item'          => __( 'Добавить новую операцию', 'agency_operations' ),
        'add_new'               => __( 'Добавить новую операцию', 'agency_operations' ),
        'new_item'              => __( 'Новая операция', 'agency_operations' ),
        'edit_item'             => __( 'Редактировать Операцию', 'agency_operations' ),
        'update_item'           => __( 'Обновиить Операцию', 'agency_operations' ),
        'view_item'             => __( 'Просмотеть Операцию', 'agency_operations' ),
        'view_items'            => __( 'Просмотреть Операцию', 'agency_operations' ),
        'search_items'          => __( 'Найти Операцию', 'agency_operations' ),
        'not_found'             => __( 'Операций не проводилось', 'agency_operations' ),
        'not_found_in_trash'    => __( 'Корзина Операций пуста', 'agency_operations' ),
        'featured_image'        => __( 'Изображение Операции', 'agency_operations' ),
        'set_featured_image'    => __( 'Установить изображение Операции', 'agency_operations' ),
        'remove_featured_image' => __( 'Удалить изображение Операции', 'agency_operations' ),
        'use_featured_image'    => __( 'Все изображения Операции', 'agency_operations' ),
        'insert_into_item'      => __( 'Добавить в Объект', 'agency_operations' ),
        'uploaded_to_this_item' => __( 'Прикрепить к этой Операции', 'agency_operations' ),
        'items_list'            => __( 'Лист операций', 'agency_operations' ),
        'items_list_navigation' => __( 'Лист операций', 'agency_operations' ),
        'filter_items_list'     => __( 'Фильтр Операций', 'agency_operations' ),
    );
    $operations_args = array(
        'label'                 => __( 'Логи операций', 'agency_operations' ),
        'description'           => __( 'Логи операций.', 'agency_operations' ),
        'labels'                => $operations_labels,
        'supports'              => array( 'title', 'editor', 'revisions', 'thumbnail' ),
        'taxonomies'            => array( 'agency_operation_type'),
        '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( 'agency_operations', $operations_args );

}
add_action( 'init', 'agency_operations_post_type', 0 );

}

с Custom Taxonomy - виды операций
Менеджер -
Роль
* Роль: Менеджер */ 
register_activation_hook( __FILE__, 'create_manager_role' );
function create_manager_role(){
  $new_role = add_role('amanager', 'Менеджер', 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( 'manager' ); }
.
/*ВАЖНО: Приведенный код - рабочий пример, требующий правок и доработок "под себя". */

Ловите действия менеджеров и публикуйте их в операции. Оъедените все в нехитрый интерфейс и Ваша задача выполненна успешно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы