Домой Каталог: Дополнения WP-Recall Shop Service Заказчик, Исполнитель, Profile Types Manager
11ответ(ов) в теме
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
1
22:59
Версия WP-Recall: 16.18.8
Версия дополнения: 1.4.2

Андрей, добрый вечер
Спасибо за отличный плагин!
Использую Profile Types Manager, при регистрации за пользователем неизменно закрепляется определенный тип профиля с определённым выводом вкладок, полей. Подскажите пожалуйста как отойти от деления пользователей сайта на заказчиков и исполнителей, а прописать для определенного существующего типа профиля, нужные вкладки?
Вы ранее упомянули, что теоретически, эти вкладки можно вообще отменить без вмешательства в код дополнения и добавить уже для всех, а затем распределить их отображение через Profile Types Manager.
Это, именно то, что нужно, тоесть, как я понял, через functions.php... У меня есть тип профиля для доверенных лиц (не доступный при регистрации) на него я хотел бы повесить вкладку исполнителей с возможностью публикации их услуг. А для всех остальных добавить вкладку в ЛК о заказе из списка услуг.

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
2
09:32

Добрый день.
Давайте пробовать реализовать вашу задачу.
Отключим стандартную регистрацию вкладок и зарегистрируем их без оглядки на текущий тип пользователя пользователя:

//отменяем стандартную регистрацию вкладок дополнения
remove_action( 'init', 'sm_add_tab', 20 );

//регистрируем вкладки для дополнения без привязки к типу профиля
add_action( 'init', 'sm_custom_add_tab', 20 );
function sm_custom_add_tab() {

	rcl_tab(
		array(
			'id'		 => 'sm-services',
			//'supports' => array('ajax'),
			'name'		 => __( 'Услуги' ),
			'public'	 => 1,
			'icon'		 => 'fa-wrench',
			'output'	 => 'menu',
			'content'	 => array(
				array(
					'id'		 => 'sm-services',
					'name'		 => __( 'Все услуги' ),
					'icon'		 => 'fa-wrench',
					'callback'	 => array(
						'name' => 'sm_service_tab'
					)
				),
				array(
					'id'		 => 'sm-service-add',
					'name'		 => __( 'Добавить услугу' ),
					'icon'		 => 'fa-plus-square-o',
					'callback'	 => array(
						'name' => 'sm_add_service_tab'
					)
				)
			)
		)
	);

	rcl_tab(
		array(
			'id'		 => 'sm-orders',
			'supports'	 => array( 'ajax' ),
			'name'		 => __( 'Заказы услуг' ),
			'public'	 => 0,
			'icon'		 => 'fa-handshake-o',
			'output'	 => 'menu',
			'content'	 => array(
				array(
					'id'		 => 'sm-service-orders',
					'name'		 => __( 'Заказы услуг' ),
					'icon'		 => 'fa-handshake-o',
					'callback'	 => array(
						'name' => 'sm_service_order_tab'
					)
				)
			)
		)
	);

	rcl_tab(
		array(
			'id'		 => 'master-reviews',
			'supports'	 => array( 'ajax' ),
			'name'		 => __( 'Отзывы' ),
			'public'	 => 1,
			'icon'		 => 'fa-handshake-o',
			'output'	 => 'menu',
			'content'	 => array(
				array(
					'callback' => array(
						'name' => 'sm_get_reviews_list'
					)
				)
			)
		)
	);
}

После этого все вкладки станут доступны пользователям и вы сможете назначать доступ к вкладкам для ваших типов пользователей, созданных с помощью дополнения Profile Types Manager.

1
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
3
22:01

К сожалению, пока не работает.
Если с конца, то при добавлении произвольной вкладки в менеджере вкладок, код из functions слетает...
Я проверял, поменяв названия вкладок в коде выше, поначалу все отображалось потом после добавления, вкладки стали называться по стандарту, то есть, наверное, оно игнорирует код выше...
Перед этим, я пробовал работоспособность, но все упиралось все равно в тип Заказчика или Исполнителя, к примеру, добавил услугу как исполнитель - с другого акка заказал - но с акка исполнителя не вижу заказа. Пробовал по разному, заказ появляется, только если я добавлю нужные поля и выберу в профилях кто есть кто...
ПС. Плагины и допы пробовал отключить, тему тоже дефолт ставил, но результата не дало.

Редакции сообщения
19.03.2020 22:05DenverПричина: не указано
0
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
4
02:14

По новой откатил, но все то же, для понимания ситуации:
- поставил доп (поля sm добавлял, и не добавлял)
- добавил код в functions.php
- в Profile Types Manager распределил вкладки (если добавлял поля sm, их тоже отмечал, пробовал по разному)
- как исполнитель, добавил услугу
- как заказчик, заказал услугу, но услуга не появилась в "Заказах услуг" у исполнителя и заказчика (если все же по дефолту, активировать поля и в настройках ЛК выбрать правильные типы, - все норм отображает).
- для интереса попробовал переименовать названия вкладок 'name' => __( '...' ), - переименовались только: вкладка Услуги и две ее подвкладки, остальные остались по дефолту, как прописано в допе.
- добавил в менеджере вкладок пустую вкладку - вкладка услуги переименовалась обратно (не так,как в functions). То есть, переименованные, как в functions, остались только две подвкладки.
Как то так... 💤

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
5
09:05

Давайте разбивать реализацию на этапы.
1. Подмена и распределение вкладок
С работой предложенного кода я проблемы не заметил, вкладки становятся доступны всем и их можно распределить через PTM между типами пользователей.
2. Публикация услуги
Получилось опубликовать услугу и сделать заказ не на нее,
3. Отображение заказов в ЛК
но заказы, как и вы и сообщили не появились в соответствующей вкладке
Чтобы решить эту проблему необходимо открыть файл /wp-content/wp-recall/add-on/shop-service/functions-profile.php со строки 244 начнется содержимое функции sm_service_order_tab(), внутри ее замените 'sm-account' на метакей того поля, которое у вас является типом аккаунта и замените 'Заказчик' и "Исполнитель" на нужные вам значения
Если все ок, то идем дальше.

1
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
6
15:15

Спасибо большое, стараюсь детально описывать ситуацию, что бы не тратить лишнего времени на недопонимания ✌

1. Да, код главную задачу по вкладкам выполнил, только замечу, что вне зависимости от указания названия вкладки в functions.php, некоторые вкладки держут старые названия, а после добавления новой произвольной вкладки через менеджер, обратно подтягиваются уже и все названия вкладок (не подвкладок) из менеджера вкладок... Это не проблема, только, чтоб не вылезло оно где-то боком, ну и разве только ради чистоты кода в functions.php, если туда придется смотреть позже...

2. Получилось

3. Ok

а. Переспрошу, sm-account встречается еще много где, менять нужно только в диапазоне строк 244-307 функции sm_service_order_tab()?

b. По замене "Заказчик" и "Исполнитель", у меня подразумевается для Исполнителя один тип профиля, в то время как заказчиком может быть несколько типов профиля, вкладка для которых открыта через Profile Types Manager, тоесть типы профилей Заказчика в коде указывать через запятую, или?
Замечу, что после замены в коде только одного типа профиля с "Исполнитель" на свой (не меняя тип профиля "Заказчик"), вроде, все сработало корректно, но доп мне не знаком пока, и я переживаю, что бы эти упущения не вылезли где-то, при том, что вы сказали поменять и "Заказчика"...

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
7
15:42

Denver сказал(а)
вне зависимости от указания названия вкладки в functions.php, некоторые вкладки держут старые названия

Ну у вас названия подтягиваются из БД, если там уже были старые названия для этих вкладок, значит они будут приоритетными, а не те, что прописаны в коде.

Denver сказал(а)
типы профилей Заказчика в коде указывать через запятую, или?

Для одного или нескольких вариантов можно условия писать так:

if(in_array($typeName, array('Заказчик')))

или
if(in_array($typeName, array('Заказчик','НеЗаказчик')))

во втором случае условие сработает и для пользователя с типом профиля "Заказчик" и для пользователя "НеЗаказчик"

Denver сказал(а)
переживаю, что бы эти упущения не вылезли где-то

там вроде больше каких то серьезных мест быть не должно, но если что то вылезет, то поправим

1
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
8
19:42

Спасибо, снова переспрошу, правильно указывать $typeName или $typeAccount, или не имеет значения?
Сейчас в таблице, во вкладке "Заказы услуг" в колонке Исполнителя пишет Заказчика...

0
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
9
21:01

Андрей, как идея...

Как я писал выше, мне нужно отойти от деления пользователей сайта на заказчиков и исполнителей, а прописать для определенного существующего типа профиля, нужные вкладки, а тоесть, нужный функционал,
отсюда вопрос -

- можно ли ВСЕХ пользователей (по возможности, включая существующих) ПО УМОЛЧАНИЮ сделать Заказчиками (к примеру, через functions.php)?
- далее скрываем через Profile Types Manager поля (SM:Тип аккаунта, SM:Контактные данные) для всех типов пользователей, кроме тех, кто подразумевается Исполнителем
- определяем нужные вкладки - Заказы услуг/Отзывы для "Заказчиков" - Услуги/Заказы услуг/Отзывы для "Исполнителей"
- теперь, либо через админку сам админ, либо уже через ЛК доверенные пользователи с определенным типом профиля смогут выставить себя "Исполнителями"...

... в моем случае, я закрою поля всем типам, и сам через админку смогу решать кому дать право публикации услуг.

Мне кажется, это в принципе смогло бы стать решением большинства подобных задач, без той мороки со вкладками и костылями, все остается как из коробки, кроме лишь возможности установки типа "Заказчик" по дефолту... Я пробовал в настройках поля ставить "Заказчик" как первое значение, но это, скорее всего, не то...

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

ПС. Я выше немного не верно выразился, а точнее это из-за внесенных изменений я сбился, там в профиле Исполнителя, во вкладке Заказы услуг, во второй колонке таблицы пишет "Исполнитель" вместо "Заказчик"

0
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
10
23:03

... супер, нашел уже и ответ в соседней теме 🥳

Вы не можете просматривать опубликованные ссылки

Андрей спасибо за помощь, все что выше, можно думаю уже не читать, ну разве кроме абзаца с ПС.
Возможно, кому-то эта тема сэкономит время 😉

0
Denver
не в сети 1 день
На сайте с 21.04.2017
Участник
Тем 64
Сообщения 193
11
19:07

Denver сказал(а)
ПС. Я выше немного не верно выразился, а точнее это из-за внесенных изменений я сбился, там в профиле Исполнителя, во вкладке Заказы услуг, во второй колонке таблицы пишет "Исполнитель" вместо "Заказчик"

Если я правильно все подправил - дело в строке 8 в файле sm-service-order-card.php
Было

<td><?php echo ($master_account == 'Заказчик')? __('Исполнитель'): __('Исполнитель'); ?></td>

вроде, так показывает верно
<td><?php echo ($master_account == 'Заказчик')? __('Исполнитель'): __('Заказчик'); ?></td>

Редакции сообщения
24.03.2020 19:08DenverПричина: не указано
0
Вы не имеете права на публикацию сообщений в этой теме