2016-09-06 2 views
0

Я пытаюсь создать контактную форму на своем веб-сайте.Wordpress Главная Форма не работает

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

Теперь я пытаюсь реализовать его на моей главной странице wordpress, и это, похоже, не работает.

Когда я отправляю, он перенаправляется на страницу блога или на «домашнюю страницу», но вместо записей в блоге.

Я должен получить подтверждение эха на submit, но этого не произойдет.

Я пробовал с action = "", action = "#", PHP_SELF, action = "/", action = "index", action = "index.php", и никто не работает.

Это мой код:

<?php 

$send = $_POST['send'] 

// Address to get the mails 
$EmailTo = "[email protected]"; 


// Form input fields 
$name = $_POST['name']; 
$email = $_POST['email']; 

$subject = explode('|', $_POST['dropdown']);; 

$message = $_POST['message']; 

if (isset($send)) { 

    if (empty($email)) { 
     $output = 'Hey, I need your email to reply'; 
    } 

    elseif (empty($name)) { 
     $output = 'Ups, you forgot your name'; 
    } 

    else{ 
     mail("[email protected]", $subject, $message, "From: $email\n"); 
     $output = 'Thanks, your submission has been sent'; 
    } 
} 

?> 

И мой HTML форма

<form method="post" action=""> 

       <p><?php echo $output; ?></p> 

       <label for="name">Your beautiful name goes here</label> 
       <input type="text" name="name" id="name"> 

       <label for="mail">I need your email to write you back, type it below</label> 
       <input type="email" name="mail" id="mail"> 

       <label for="dropdown">Are you looking for help in something specific or just wanted to say HI?</label> 
       <select name="dropdown" id="dropdown"> 
        <option>Just wanted to say Hi!</option> 
        <option>I need help with my brand</option> 
        <option>I want to launch a website</option> 
        <option>Other</option> 
       </select> 

       <label for="else">Is there something else you want to tell me?</label> 
       <textarea name="else" id="else"> 

       </textarea> 

       <button class="btn btn-red" name="send" type="submit">SEND</button> 

      </form> 
+0

В каком файле находится ваш PHP-код? –

+0

, вероятно, правила переписывания мод Wordress в игре. почему ты не делаешь это в Wordpress? – nogad

+0

Вы проверили ошибки синтаксиса? Я не вижу ';' в одной строке –

ответ

0

Попробуйте использовать полный URL в виде действия, то есть, www.yourdomain.com/form-processor- script.php.

В качестве примечания стороны обычно не должны иметь форму, представляющую себя - это плохая «форма», поскольку она позволяет пользователям повторно вводить данные формы с помощью кнопки обновления браузера. Он также вводит логику в ваш уровень представления. Посмотрите на шаблон Post-Redirect-Get или PRG.

+0

Спасибо за совет. Я сделаю это. – Ferrius

+0

Я уже пытался установить точный URL-адрес, но это не сработало. – Ferrius

+0

Что не сработало? Сценарий обработки формы? Я не думаю, что вы можете использовать простую функцию mail() в wordpress. Форма не передает данные в целевое местоположение действия? Wordpress имеет встроенную функцию wp_mail(). Попробуйте заменить скрипт обработки формы простым выходом, чтобы обеспечить отправку своей формы. Затем устраните неисправность скрипта. Как бы то ни было, вы знаете, что скрипт работает, только если вы правильно написали письмо? Многое может пойти не так между отправкой формы и срабатыванием электронной почты. – joeDaigle

0

После некоторого исследования я обнаружил, что лучший способ запустить действие формы - превратить форму html и обработку в плагин WP.

Вы можете увидеть его в коде ниже

<?php 

/* 
    Plugin Name: Contact Form Plugin 
    Plugin URI: http://ferrius.co 
    Description: Simple non-bloated WordPress Contact Form 
    Version: 1.0 
    Author: Sebastian Ferreira 
    Author URI: http://ferrius.co 
*/ 


function html_form_code() { 

    echo '<form action="' . esc_url($_SERVER['REQUEST_URI']) . '" method="post">'; 
    echo '<br>'; 

    echo '<label for="cf-name">Your beautiful name goes here</label>'; 
    echo '<input type="text" name="cf-name" pattern="[a-zA-Z0-9 ]+" value="' . (isset($_POST["cf-name"]) ? esc_attr($_POST["cf-name"]) : '') . '"/>'; 

    echo '<label for="cf-email">I need your email to write you back, type it below</label>'; 
    echo '<input type="email" name="cf-email" value="' . (isset($_POST["cf-email"]) ? esc_attr($_POST["cf-email"]) : '') . '"/>'; 

    echo '<label for="cf-subject">Are you looking for help in something specific or just wanted to say HI?</label>'; 
    echo '<input type="text" name="cf-subject" pattern="[a-zA-Z ]+" value="' . (isset($_POST["cf-subject"]) ? esc_attr($_POST["cf-subject"]) : '') . '" />'; 

    echo '<label for="cf-message">Is there something else you want to tell me?</label>'; 
    echo '<textarea name="cf-message">' . (isset($_POST["cf-message"]) ? esc_attr($_POST["cf-message"]) : '') . '</textarea>'; 

    echo '<button class="btn btn-red" type="submit" name="cf-submitted" value="SEND"/>SEND</button>'; 
    echo '</form>'; 

} 

function deliver_mail() { 

    // if the submit button is clicked, send the email 
    if (isset($_POST['cf-submitted'])) { 

     // sanitize form values 
     $name = sanitize_text_field($_POST["cf-name"]); 
     $email = sanitize_email($_POST["cf-email"]); 
     $subject = sanitize_text_field($_POST["cf-subject"]); 
     $message = esc_textarea($_POST["cf-message"]); 

     // get the blog administrator's email address 
     $to = "[email protected]"; 

     $headers = "From: $name <$email>" . "\r\n"; 

     // If email has been process for sending, display a success message 
     if (wp_mail($to, $subject, $message, $headers)) { 
      echo '<div>'; 
      echo '<p>Thanks for contacting me, expect a response soon.</p>'; 
      echo '</div>'; 
     } else { 
      echo 'An unexpected error occurred'; 
     } 
    } 
} 

function cf_shortcode() { 
    ob_start(); 
    deliver_mail(); 
    html_form_code(); 

    return ob_get_clean(); 
} 

add_shortcode('ferrius_contact_form', 'cf_shortcode'); 

?> 

Надеется, что это полезно для кого-то.

Смежные вопросы