Добрый день. Есть один вопрос по поводу разделения аккаунтов. Было приобретен 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'
)
]
]
)
);
}
}
}