gillesvauvarin
  • 0
Новичок

Форма в пользовательском виджете

  • 0

Я пытаюсь создать пользовательский виджет контактной формы. Итак, я хотел бы отобразить контактную форму с виджетом WordPress и отправить сообщение.

Нет проблем с отображением формы с моим виджетом, но когда я нажимаю кнопку отправки, я не могу получить свои данные. isset($_POST[‘my_data’]) не работает.

Когда я помещаю код формы из виджета в простой файл php, все в порядке, isset($_POST[‘my_data’]) работает хорошо.

Я делаю тест с помощью этого простого фрагмента:

<?php

//$form_action = '';
$form_action = get_bloginfo('url').'#contactBox';

if (isset($_POST['send'])) {
echo "The isset 'send' work well 
";
$name = (isset($_POST['name'])) ? $_POST['name'] : '';
echo "name = ".$name." ";
} else {
echo "There is something WRONG !!!";
}

// Display the form
echo '<form method="post" action="'.$form_action.'">'."\n";
echo '  <p>'."\n";
echo '  <label for="name">Name</label>'."\n";
echo '  <input type="text" name="name" value="'.$name.'" />'."\n";
echo '  </p>'."\n";
echo '  <div style="text-align:center;"><input class="submit" type="submit" name="send" value="Send" /></div>'."\n";
echo '</form>'."\n";

?>

Можно ли реализовать форму с пользовательским виджетом WordPress?

Это полный код моего пользовательского виджета с контактной формой: http://www.pixenjoy.com/documents/widget.zip

Я добавляю два эхо-сообщения в этот код, чтобы проверить получение моей формы данных (if(isset…) > строка 145 «ok» строка 190 «ko»

Share
  1. Я помню тему поддержки, которую я читал в отношении проблемы, когда вы используете имя name для одного из ваших полей сообщения, попробуйте добавить префикс к своим входным именам.

    <input type="text" name="my-name"  ...
    

    И посмотрите, поможет ли это..

    Продолжение №1

    Я выполнил простой тест внутри виджета.

    if( isset( $_POST ) ) {
        print'<pre>';print_r( $_POST );print'</pre>';
    }
    echo '<form action="'.home_url().'" method="post"><input type="text" name="thename" /><input type="submit" name="submit" /></form>';
    

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

    Продолжение № 2

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

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

    • 0
  2. Кажется, проблема связана с «действием формы». Ранее я реализовал форму внутри виджета. (Я использую класс WP_Widget )

    Я оставил действие пустым. Это означает, что данные $_POST передаются функции виджета. Логику обработки формы можно написать внутри функции виджета.

          <?php
           function widget($args, $instance){
            Form Processing Logic here  
             if isset ($_POST)  {  do   }
              //Display complete form here like this
    
              ?>
             <form method="post" id="form_id" action = "" >
    
         Email:<input name="email" id="email" class="a" value=" email"/>
              <br /><br />
                 <input type="submit" value="subscribe"  class="b"/>  
          </form>
             </div>
    
          <?php
                  }
                    ?>
    
    • 0

Оставить ответ

You must login to add an answer.