Мы работаем над проектом Wordpress, который требует:
- список терапевтов с кнопкой «Контакт» для каждого
- (выполнено, перечислено с помощью «Локатора магазина» и группы пользователей «Конечный участник» для терапевтов)
- после нажатия кнопки контакта должно появиться модальное окно с формой контакта, которая также регистрирует пользователя, запрашивая адрес электронной почты
(сделано с помощью модального плагина и пользовательской регистрационной формы Ultimate Member)
Я также должен сохранить идентификатор пользователя выбранного терапевта в переменной после нажатия на него, чтобы мы знали, кому отправить сообщение, если я делаю это, используя атрибут data на кнопке и получая его значение с JQuery при модальном открытии
- при отправке этой формы, отправленное на месте сообщение должно быть отправлено выбранному терапевту с подробной информацией, указанной в форме
- здесь все усложняется, я пытаюсь перехватить отправку формы и отправить сообщение с Front End PM
Функция обработки сообщений (на основе Front End Pm docs):
Я проверил это, просто чтобы быть уверенным, что, вызывая его с Ajax при открытии модального режима, функция отправляет сообщение с соответствующей информацией выбранному терапевту. Yay.
function sendMessage_withAjax() {
// Getting the selected Therapist's ID from the Ajax call
$selectedTherapist = $_POST['selectedTherapist'];
// Composing the message
$message = array(
// sample data for testing if the function actually works
'message_title' => 'Sample Title',
'message_content' => 'Sample Message',
'message_to_id' => $selectedTherapist
);
// Setting the message sender with sample data
$override = array(
'mgs_author' => '1',
);
// Sending the message
fep_send_message( $message, $override );
}
Функция с подключением единой системы обмена сообщениями / без Ajax:
// This is not doing anything. I'm trying to call the
// function on registration, this is the only method
// I've found, I would be more confident with an Ajax call
// on form submission (no clue about how to), since that worked,
// but maybe I'm missing something and this should be
// the more reliable method
// One more thing: this should only run on that specific form,
// not on ALL registration (eg from header registration, etc).
// I have a feeling that this would run on all form submission
// across the site.
// How do I limit this to the "Contact Therapist" form?
add_action('um_user_register','sendMessage_withUMhook',10,1);
function sendMessage_withUMhook($user_id,$args) {
// Safety Issues
if ( $user_id < 1 )
return;
if ( ! function_exists( 'fep_send_message' ) )
return;
// Getting the selected Therapist's ID by populating
// a hidden form field with jQuery, I have no other
// clue about how to pass that data-attribute to this
// function, but I'm open for more elegant solutions
// as this adds unnecessary reg datas to the user
$message = array(
'message_title' => 'New Client Request',
'message_content' => um_user('contactTherapist_message'),
'message_to_id' => um_user('selectedTherapist')
);
// Setting the message sender to the created user's ID
$override = array(
'mgs_author' => $user_id,
);
// Sending the message
fep_send_message( $message, $override );
}
Краткое резюме:
- Как передать переменную из внешнего атрибута данных в функцию?
- (без URL-адресов, если возможно, потому что мне нужно сделать это на той же странице)
- Как отправить сообщение переднего плана PM при отправке формы единой системы обмена сообщениями?
Я попробовал еще пару экспериментальных методов, но это привело меня только к «Backend Fetch Failed» и другим ошибкам, поэтому я рассматриваю их как тупики.
Я открыт для советов по любым методам, включая функции jQuery, Ajax или PHP, любая помощь приветствуется.