Отправить форму HTML в WordPress не работает

Я использую этот мод Bootstrap для отправки формы в WordPress. Что я делаю сейчас, я пишу bootstrap modal code в Visual Composer в html structure,

Вот код

<form method="post">
<div class="form-group"><label class="control-label" for="recipient-name">Your Name:</label>
<input id="recipient-name" class="form-control" type="text" /></div>
<div class="form-group"><label class="control-label" for="message-text">Your Message:</label>
<textarea id="message-text" class="form-control"></textarea></div>
</form></div>
<div class="modal-footer"><button class="btn btn-default" type="button" data-dismiss="modal">Close</button>
<button class="btn btn-primary" name="send_message" type="button">Send message</button></div>

Теперь проблема в том, что я хочу отправить сообщение на определенный адрес электронной почты. с именем кнопки send_message

Есть ли хитрость, чтобы использовать isset($_POST['send_message']) от functions.php? Я мог бы разместить HTML-форму и isset отправить с помощью shortcode прямо из functions.php но, к сожалению, я понял, что Visual Editor не распознает shortcode в html editor

Любая помощь будет оценена. Заранее спасибо.

1 ответ

Решение

Если вы хотите использовать свой собственный короткий код в VC, вы можете просто использовать средство сопоставления коротких кодов, расположенное в Visual Composer -> Shortcode Maper. После настройки вы можете использовать свой шорткод как любой другой компонент VC.

Говоря о вашей форме, вы не можете отправить ее прямо так, как сейчас. Вы можете обработать его с помощью javascript/jQuery, используя ajax, но это немного другая история. Если вы хотите меня, я могу добавить его к своему ответу позже.

Если вы хотите использовать это простым способом, прежде всего, вы должны дать имена своим входам. Во-вторых, вы должны положить

<input type="submit">

внутри вашей формы. После этого форма будет отправлена ​​на текущую страницу после отправки, используя метод POST.

После этого поместите что-то подобное в файл functions.php для простой обработки почты.

add_action( 'init', 'process_email' );
function process_email() {
    if( isset( $_POST['your_required_input_name'] ) ) {
        $name = $_POST['your_name_input_name'];
        $txt = $_POST['your_message_input_name'];
        $to = 'example@mail.com'; // put your email here
        $subject = 'Put any subject here';
        $message = 'Name: '.$name."\n\r".'Message: '.$txt;
        $headers = 'From: example@mail.com' . "\r\n"; // put user's email here or duplicate your email

        wp_mail($to, $subject, $message, $headers);

        header('Location: '.$_SERVER['REQUEST_URI']);
        die();
    }
}

Также обратите внимание, что вы можете использовать плагин CF7 для создания формы ajaxy и вставлять ее в свой VC с помощью шорткода.

-------------------------------- ОБНОВЛЕНО ----------------- -----------------

Если вы хотите обработать свою форму с помощью AJAX, вы можете использовать для нее jQuery. Обычно он уже поставлен в очередь на большинство тем, поэтому просто поместите что-то подобное в ваши functions.php

add_action( 'wp_footer', 'process_email_by_ajax' );
function process_email_by_ajax() {
?>
<script>
    (function($){
        $('button.btn-primary').click(function(){
            $.post(window.location.href, {
                your_name_input_name: $('#recipient-name').val(),
                your_message_input_name: $('#message-text').val()
            }, function(){
                alert('Yay! Success message!')
            }).fail(function(){
                alert('Oh no! Something goes wrong!')
            })
            return false;
    })
    })(jQuery)
</script>
<?php
}

Он отправит пост-запрос с вашими входными данными и данными textarea в скрипт, который размещен выше. Обратите внимание, что вы должны изменить $_POST['your_required_input_name'] на какой-то обязательный параметр post (то есть your_name_input_name, если вы хотите, чтобы имя было обязательным).

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