Написать Скрипт WordPress, который активирует нужный чекбокс в Профиле
Напишите, пожалуйста, свои предложения, сроки и цену.
Задача такая.
Коротко - сделать так, чтобы в Профиле пользователя автоматически ставилась галочка в нужном чекбоксе образно из Раздела 2, если есть активированный чекбокс точно с таким же именем, но уже в Разделе 1.
Понятней отразил на скриншоте во вложении.
Теперь чуть подробней.
1. Есть плагин YITH Automatic Role Changer for WooCommerce, который автоматически создаёт в Профиле пользователя чекбоксы и активирует их. Тут всё ок.
На скриншоте они в Разделе «User Roles» в красной рамке.
Для WordPress - это дополнительные роли пользователя.
2. Также в Профиле есть ещё чекбоксы с такими же именами, но уже в другом месте.
На скриншоте они в Разделе «Форум - дополнительные группы пользователей» в синей рамке.
Эти чекбоксы я добавляю сам вручную через другой плагин - WP Foro. Это некие дополнительные группы. Не важно.
3. Задача - если есть активная галочка в Разделе «User Roles», то поставить галочку у чекбокса точно с таким же именем в Разделе «Форум - дополнительные группы пользователей».
Смысл в том, чтобы в Профиле активные галочки соответствовали друг другу в этих двух разделах. Например, если активен «Чекбокс 1» в одном месте, то скриптом как-то активировать «Чекбокс 1» в другом месте.
Сейчас мне приходится ставить галочки в Разделе «Форум - дополнительные группы пользователей» вручную, как только появляется новая роль у пользователя.
Это не катит, когда пользователей сотни.
При создании задачи я рассуждал так:
Чтобы не вникать в логику работы плагинов, не заморачиваться с интеграцией и т.д. -
можно просто скриптом «Залезть» в Профиль пользователя, сравнить там имена чекбоксов и поставить галочку где надо.
Именно поэтому я специально назвал чекбоксы в Разделе «Форум - дополнительные группы пользователей» точно так же, как и роли. Чтобы был шанс их сравнить)
Я не знаю, возможно ли это сделать скриптом, но задача звучит просто, если это возможно.
По идее, до ролей WordPress можно легко добраться, сравнить их имена в Профиле и тогда ими можно оперировать.
Что касается чекбоксов из Раздела «Форум - дополнительные группы пользователей», то тут интересней.
Их я создаю сам, внутри плагина WP Foro, и они появляются в Профиле.
У разработчика WP Foro нет технической документации.
Но он писал следующее:
«Мы создали две функции, которые позволяют добавлять, удалять и изменять usergroup_secondary по мере необходимости»:
1) WPF()->member->set_usergroups_secondary($userid, $groupids);
2) WPF()->member->append_usergroups_secondary($userid, $groupids);
Возможно, это те самые функции, к которым тоже можно добраться, чтобы сравнивать их с чебоксами для ролей.
В этом я не уверен. Возможно, придётся копаться в коде плагина, чтобы понять - что отвечает за эти дополнительные группы.
А может всё проще - скрипт просто «Залазит в Профиль» и сравнивает поля.
Если это возможно, вот условия:
1. Скрипт должен запускаться только тогда, когда в Профиле активируется чекбокс у любой роли в Разделе «User Roles».
Не хочу, чтобы скрипт постоянно мониторил Профиль и нагружал сайт.
Получается что-то вроде этого:
ЕСЛИ (активируется любая дополнительная роль пользователю), то:
{
Действие 1: Проверить, какие Роли активны и запомнить их названия (на русском, английском - любой язык);
Действие 2: Активировать дополнительные Группы в Профиле точно с такими же именами;
Действие 3: Сохранить изменения в Профиле;
}
ИТОГ: скрипт должен Активировать те дополнительные Группы, что совпадают с именами Активированных ролей и сохранить изменения.
В идеале нужен скрипт, который можно по мере необходимости скопировать/вставить на другие сайты.
Для работы я подготовил тестовый сайт и доступ в админку с нужными правами для редактирования файлов темы и плагинов.
Там можно посмотреть Профиль тестового пользователя и эти самые чекбоксы.
Если сможете это реализовать, напишите, пожалуйста - возможен ли мой способ реализации задачи или у вас какие-то другие идеи, чтобы я понимал, что от меня требуется и как вести работу.
С уважением, Игорь.