我正在尝试构建一个联系人表单自定义小部件。所以我想显示一个带有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”
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
}
?>