Добрый день. Есть один вопрос по поводу разделения аккаунтов. Было приобретен profile type manager и настроен как рекомендовано. Разделение на роли работает. Но остался вопрос по разделению на роли внутри биржи. Поясню в чем именно:
При входе в ЛК есть вкладка Сделки и Заявки. Внутри вкладки само разделение на типы публикаций. Там их три(3):
- Задания Заказчик
- Задания Исполнитель
- Оставленные заявки
Вопрос в следующем. Как эти вкладки разделить в ЛК, что бы Задания Исполнитель и Оставленные заявки были доступны в одной роли, а Задания заказчик в другой роли.
Цель данного разделения в том, что бы разделить исполнителей и заказчиков в личном кабинете, что бы заказчики не могли откликнутся на работу и наоборот.
Андрей CS сказал(а)
я спрашиваю о поле профиля, а не о вкладке, смотрите в разделе "Поля профиля", нужен метакей поля профиля по которому вы делите пользователей на группы
Meta-key:tip_akkaunta_49 - по созданным двум типам профиля Исполнитель и заказчик. Но как я понял там деление идет по вкладкам меню.
такой код должен помочь
remove_action( 'init', 'fng_add_tab', 20 ); add_action( 'init', 'fng_add_custom_tab', 20 ); function fng_add_custom_tab() { global $user_LK; $subtabs = []; if($user_LK){ $type = get_user_meta($user_LK, 'tip_akkaunta_49', 1); if($type == 'Заказчик'){ $subtabs[] = [ 'id' => 'customer', 'name' => __( 'Задания: Заказчик' ), 'icon' => 'fa-handshake-o', 'callback' => array( 'name' => 'fng_get_customer_tab' ) ]; }else if($type == 'Исполнитель'){ $subtabs[] = [ 'id' => 'performer', 'name' => __( 'Задания: Исполнитель' ), 'icon' => 'fa-handshake-o', 'callback' => array( 'name' => 'fng_get_performer_tab' ) ]; $subtabs[] = [ 'id' => 'requests', 'name' => __( 'Оставленные заявки' ), 'icon' => 'fa-handshake-o', 'callback' => array( 'name' => 'fng_get_requests_tab' ) ]; } } rcl_tab( array( 'id' => 'freelance', 'supports' => array( 'ajax' ), 'name' => __( 'Сделки и заявки' ), 'public' => 0, 'icon' => 'fa-handshake-o', 'output' => 'menu', 'content' => $subtabs ) ); }
1. Это интересное решение, но тогда сама вкладка становится логически не нужной и несет излишние вложения. Так как вкладка в кабинете остается - Сделки и заявки. что опять вводит в заблуждение пользователя.
Есть ли возможность вытащить эти пункты из субвкладок во вкладки, что бы спокойно настраивать их в плагине по разделению ролей? Либо есть шорткоды этих вкладок может? Либо другой метод поднятия их на уровень выше?
Решение поднять с субвкладки на вкладку было бы практичным, и тогда плагин разделения ролей в кабинете сработал бы как нужно.
2. Вопрос по чату. Как запретить общение в чате между аккаунтами? Смысл биржи пропадает, так как любой аккаунт может написать автору задания, и предложить услуги напрямую. Не должно ли работать правило что общение разрешено только между исполнителем и заказчиком в случае если заказчик выбрал исполнителя? Как решение, как запретить писать в любых других случаях кроме как при арбитраже, при выборе в качестве исполнителя?
Заранее спасибо за советы и ответы.
Я дал вам код, который, как мне казалось, решал бы вашу задачу.
Если вам это не подходит, то можете самостоятельно регистрировать вкладки с помощью функции
Если вы не можете этого сделать, то можете опубликовать задание в соответствующем разделе
internetica@mail.ru сказал(а)
Не должно ли работать правило что общение разрешено только между исполнителем и заказчиком в случае если заказчик выбрал исполнителя?
Не должно. Это вам требуется что то запрещать, по-умолчанию таких ограничений нет, на этом сайте то же, не вижу в этом смысла.
Вы можете скрыть вкладку чата, сделать ее недоступной, возможности у вас для этого есть через настройки вкладки или в настройках доступа к разделам ЛК от дополнения profile types manager
Получается что profile types manager по своей сути не умеет разделять роли аккаунтов биржи фриланса из коробки(хотя в теме по плагину он был рекомендован как умеющий). Суть покупки расширений, использование в рамках админ панели без доработок и API. Если бы хотелось дорабатывать, писали бы сами. Суть покупки сэкономить время за счет денег).
Где то на сайте видели что Вы спрашиваете что дополнить или что улучшить в плагинах. Напишите аддон для profile types manager и биржи фриланса, как обновление или как новый аддон в виде нового продукта. Купим. Хотя уже куплены оба, но решения нет.
Сейчас он не решает вопроса разделения ролей в бирже, так как если убрать все остальные вкладки в кабинете, кроме тех что относятся к бирже, разделять не чего. Именно по причине того, что пункты которые нужно разделить, не находятся на том уровне, который разделяет profile types manager из админки (речь о работе с кодом не идет)
Простая доработка решит много проблем, в особенности по универсальности и гибкости решений.
Спасибо за все Ваши советы и решения. Доброго дня.
Задача дополнения profile types manager - разделять доступ к вкладкам ЛК и со своей задачей дополнение прекрасно справляется. Кроме того, дополнение имеет подробное описание с которым вы вероятно ознакомились перед его приобретением, а значит понимали для чего это дополнение приобретается. Почему это дополнение должно "уметь" что то сверх описанного функционала - мне не ясно.
Собственно, на данный момент, вообще нет инструмента, который бы позволял работать с дочерними вкладками, а тем более, делать их родительскими из админки. Без кода, в данном случае, вам видимо не обойтись.
Я дал выше ссылку на функцию, с помощью которой вы можете зарегистрировать дочерние вкладки в качестве родительских, учитывая, что приведенный мной код выше содержит все данные нужных вкладок, вашу задачу можно решить с помощью только этого.
Вот, накидал код, который перерегистрирует дочерние вкладки в качестве родительских, возможно, поможет
remove_action( 'init', 'fng_add_tab', 20 ); add_action( 'init', 'fng_add_custom_tabs', 20 ); function fng_add_custom_tabs() { global $user_LK, $user_ID; $isAdmin = rcl_is_user_role($user_ID, 'administrator'); if($user_LK || $isAdmin){ $type = get_user_meta($user_LK, 'tip_akkaunta_49', 1); if($type == 'Заказчик' || $isAdmin){ rcl_tab( array( 'id' => 'fng-customer', 'name' => __( 'Задания: Заказчик' ), 'public' => 0, 'icon' => 'fa-handshake-o', 'output' => 'menu', 'content' => [ [ 'callback' => array( 'name' => 'fng_get_customer_tab' ) ] ] ) ); } if($type == 'Исполнитель' || $isAdmin){ rcl_tab( array( 'id' => 'fng-performer', 'name' => __( 'Задания: Исполнитель' ), 'public' => 0, 'icon' => 'fa-handshake-o', 'output' => 'menu', 'content' => [ [ 'callback' => array( 'name' => 'fng_get_performer_tab' ) ] ] ) ); rcl_tab( array( 'id' => 'fng-requests', 'name' => __( 'Оставленные заявки' ), 'public' => 0, 'icon' => 'fa-handshake-o', 'output' => 'menu', 'content' => [ [ 'callback' => array( 'name' => 'fng_get_requests_tab' ) ] ] ) ); } } }