Контактная форма Webhook для Discord в wordpress

Итак, я начну с того, что я немного новичок в этом.

Итак, у меня есть сайт, который я создаю сейчас. Это веб-сайт гильдии World of Warcraft, и мы хотим, чтобы новые люди могли подавать заявки на членство.

Создать контактную форму с помощью плагинов достаточно просто, но теоретически я хочу сделать следующее:

Контактная форма, при заполнении которой форма заявки отправляет уведомление на веб-перехватчик, установленный в Discord, где при появлении новых кандидатов будет отправлено сообщение в канале, уведомляющее об этом лидеров.

Нужно ли мне создавать плагин самому или есть какой-нибудь плагин, который может предложить эту функцию?

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

zipkundan 05.11.2018 07:02

Это своего рода облом, потому что я нашел плагин уведомлений, который действительно предлагал функцию уведомления веб-перехватчика. Но он не предлагал формы заявки в качестве триггера. : - /

Artic 05.11.2018 11:32

Что ж, в этом случае вы, вероятно, можете попробовать настроить плагин уведомлений, чтобы включить формы приложения в качестве триггера. Может быть, переопределив действие / хук, в котором перечислены доступные триггеры и их последующий поток.

zipkundan 05.11.2018 12:43
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
2
3
368
1

Ответы 1

У меня были те же потребности, но через какое-то время я нашел способ сделать это.

На самом деле это очень просто с WPForms.

WPForms имеет хуки, поэтому вы можете легко отслеживать отправку форм с помощью ловушки wpforms_process_complete. Этот хук позволяет отслеживать подчинение ВСЕ WPForms. Но, возможно, вы захотите иметь другие формы. Если вы хотите отслеживать только определенную форму, вы можете добавить идентификатор формы в конец имени ловушки.

В моем случае у меня было много разных форм, которые обрабатывались по-разному, поэтому мне пришлось их разделить. Когда форма создается в WPForms, он получает идентификатор также создает поля названной формы.

В моем случае после создания моей формы у нее был следующий идентификатор:

Функция перехвата.

Как объясняется в Страница Discord Webhook, Webhooks - это простой способ публиковать сообщения на каналах в Discord. Для использования они не требуют наличия пользователя-бота или аутентификации. Конечная точка поддерживает как JSON, так и тела данных форм. В моем случае я выбрал JSON.

Как объяснено здесь, вам просто нужно использовать одно из полей content, file или embeds. В этом примере я просто отправлю сообщение, поэтому буду использовать поле content.

После применения приведенных выше инструкций у вас должно получиться что-то похожее на следующую функцию:

if ( ! function_exists( 'discord_form_submission' ) ) :

    /**
     * This will fire at the very end of a (successful) form entry.
     *
     * @link  https://wpforms.com/developers/wpforms_process_complete/
     *
     * @param array  $fields    Sanitized entry field values/properties.
     * @param array  $entry     Original $_POST global.
     * @param array  $form_data Form data and settings.
     * @param int    $entry_id  Entry ID. Will return 0 if entry storage is disabled or using WPForms Lite.
     */
    function discord_form_submission( $fields, $entry, $form_data, $entry_id ) 
    {
        // You have to replace this url by your discord webhook.
        $endpoint = 'https://discord.com/api/webhooks/{webhook.id}/{webhook.token}';
        
        // This is the content you can put anything you wish.
        // In my case i needed the Name, Class, and the Level of the players.
        $content  = "**Name :** " . $fields[1]['value'] . PHP_EOL;
        $content .= "**Class :** " . $fields[2]['value'] . PHP_EOL;
        $content .= "**Level :** " . $fields[3]['value'] . PHP_EOL;
        
        // WP has its own tool to send remote POST request, better use it.
        wp_remote_post( $endpoint , [ 
            'headers' => [
                'Content-Type' => 'application/json; charset=utf-8'
            ],
            'body' => wp_json_encode([ // Same for the JSON encode.
                'content' => $content,
            ]),
            'method' => 'POST',
            'data_format' => 'body'
        ]);
    }
    
endif;

Эта функция должна быть добавлена ​​в файл functions.php вашей темы.

И последнее, но не менее важное: с помощью функции WP add_action вам необходимо подключиться к ловушке wpforms_process_complete. В моем случае, поскольку я хочу подключиться только к форме с идентификатором 1862, я добавил идентификатор в конец крючка, который дает нам следующий код:

add_action( 'wpforms_process_complete_1862', 'discord_form_submission', 10, 4 );

Этот код необходимо добавить в файл functions.php вашей темы после нашей недавно добавленной функции.

Другие вопросы по теме