Отправить форму 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, если вы хотите, чтобы имя было обязательным).