A form in a custom widget

时间:2011-04-09 作者:Gilles Vauvarin

我正在尝试构建一个联系人表单自定义小部件。所以我想显示一个带有WordPress小部件的联系人表单并发送一条消息。

用我的小部件显示表单没有问题,但当我单击发送按钮时,我无法检索数据。isset($\\u POST[\'my\\u data\'])不起作用。

当我将表单代码从小部件中放在一个简单的php文件中时,一切正常,isset($\\u POST[\'my\\u 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自定义小部件实现表单?

这是我的自定义小部件的完整代码,带有联系人表单:www.pixenjoy。com/文档/小部件。拉链

我在这段代码中添加了两条echo消息来测试数据表单的检索(if(isset…)>第145行“ok”第190行“ko”

2 个回复
SO网友:t31os

我记得我读过一篇关于使用该名称时出现问题的支持主题name 对于其中一个post字段,请尝试在输入名称前加前缀。

<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>\';
我看到表单设置的post变量很好,请发布更多适用的代码。

后续#2

如果您尝试我上面发布的测试代码,它是否有效?如果是这样的话,那么我会猜测提交输入名称的任何一个表单操作都会出现问题,尝试对该操作进行编码或更改提交输入以匹配我的测试名称,然后查看其中一个更改是否修复了该问题。

如果两者都没有帮助,接下来我建议禁用插件以排除干扰(插件可能会让人不安$_POST 某一点上的变量(只是一个粗略的猜测,但仍然有可能)。

SO网友:Ankit

看来问题出在“形式行动”上。我之前在小部件中实现了一个表单。(我正在使用WP_Widget Class)

我把动作留白了。。这意味着$\\u 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
              }
                ?>

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?