Custom forms + Polylang

时间:2016-07-14 作者:user12

我是Wordpress的新手,但我对PHP有一些了解。我正在创建一个双语网站(Polylang),它有多种形式。其中一些由联系人表格7处理,但其他一些必须定制。

因此,我制作的第一个表单是一个相当大的灾难-它可以工作,但在某些情况下。

在自定义帖子的存档页中,我插入

<form method="post" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<input type="hidden" name="post_type" value="myvalue">
<select class="form-control"  name="k" id="k">
<?php  
for($i=0;$i<2;$i++){?>
<option value="<?php echo $array3[$i]?>"><?php echo $array3[$i];?></option>
<?php }?>   
</select>
<span class="input-group-btn">
<button class="btn btn-search" type="submit"><i class="fa fa-search">  </i></button>
</span>
</form> 
我创建了一个名为mysearchresults的模板文件。php在其中插入了essential(在它们之间)

 echo $_POST[\'k\'];
 echo "Hello world";   
我创建了一个以mysearchresults为模板的页面。一种语言(名为mysearchresults)中的php和另一种语言(同一模板)中名为mysearchresults-2的php。

加载这两个页面将生成一个打印了Hello world的页面。

正在添加

<form method="post" action="<?php echo esc_url( home_url( \'/\' ) ); ?>mysearchresults-2">
给出404(当我按下submit按钮时-已做出选择)-与我输入mysearchresults的结果相同,而不是-2。正在放置我的搜索结果。php给出了相同的错误。

所以我尝试了另一种方法

<select class="form-control"  name="k" id="k"> 
我把

<select class="form-control"  name="s" id="s">
为了行动我离开了

action="<?php echo esc_url( home_url( \'/\' ) ); ?>">  
在搜索页面中,我放入echo$\\u POST[\'s\'],然后加载搜索结果页面,打印我选择的值。

我做错了什么?如何拥有自定义表单、在操作文件中传递值并对其进行操作?为什么要像这样将加载到搜索结果页面的操作标签保留下来?

2 个回复
SO网友:urka_mazurka

对于动作标签,wordpress内部使用了一些保留术语。因此,您应该避免使用此术语(尤其是在http\\U post ot get请求中)s代表搜索,这就是为什么输出是一个搜索结果页。您可以在此处找到保留条款:https://codex.wordpress.org/Reserved_Terms

如果您需要非常简单的表单(在本例中似乎如此),我建议您学习如何使用add\\u query\\u arg将变量附加到url。这里是一个很好的起点,它非常简单,可以随时使用:https://developer.wordpress.org/reference/functions/add_query_arg/

SO网友:Aurovrata

您还可以查看polylang extension for contact form 7. 它允许您使用熟悉的polylang translator管理工具以不同的语言管理多个表单。

相关推荐

使用WPForms提交表单时触发操作

我的一位客户使用WPForms插件创建前端表单。提交表单时,条目进入de数据库(在单独的表wp\\u wpform\\u entries或类似的表中,全部由插件处理)。但他们也希望以JSON格式将所有数据发布到另一个网站。是否有办法知道表单已提交,或者使用add_filter(\'wp_insert_post)?