Отправить Front End PM сообщение после успешной регистрации участника Ultimate - PullRequest
0 голосов
/ 29 июня 2019

Мы работаем над проектом 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, любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...