我有一张表格,像这样
<form id="property_type_form" method="post" action="">
<div data-toggle="buttons" class="category-filters btn-group pull-left">
<label id="property_type_all" class="btn active hvr-overline-from-center"
onclick="location.replace(\'<?php echo home_url( $wp->request ) ?>\')">
<?php _e( \'Todas\', \'irealtor\' ) ?>
</label>
<?php foreach ( $property_type as $type ) : ?>
<label for="house" id="label_<?php echo $type->slug ?>"
class="btn hvr-overline-from-center">
<input type="checkbox" id="<?php echo $type->slug ?>" value="<?php echo $type->slug ?>"
name="property_type" onchange="this.form.submit()"/>
<?php echo $type->name ?>
</label>
<?php endforeach; ?>
</div>
</form>
在同一个文件中,我使用以下代码处理请求:
if ( isset( $_REQUEST[\'property_type\'] ) && $_REQUEST[\'property_type\'] ) {
$args[\'tax_query\'] = array(
array(
\'taxonomy\' => \'property_type\',
\'field\' => \'slug\',
\'terms\' => $_REQUEST[\'property_type\'],
)
);
}
我还尝试以下任何一种:
action="<?php echo esc_url( $_SERVER[\'REQUEST_URI\'] ) ?>"
action="<?php echo home_url( $wp->request ) ?>"
action="<?php get_permalink();?>"
当我在任何其他页面上使用此表单时,它会按照我的意愿工作,但如果我在frontpage中使用它,表单操作会转到博客页面,我不知道为什么。有什么想法吗?
SO网友:Rick Hellewell
因为,默认情况下,如果不在目标中指定实际页面,它会假定您的意思是www.example.com/
, 去了www.example.com/index.php
页面,加载站点的主页,该主页是站点的首页,通常是博客页面(除非您将静态页面指定为博客的“主页”)。(简单解释…)
因此,您需要转到处理表单的页面。如果是它本身,则需要在“action”参数中使用它:
action="<?php get_permalink();?>"
它将返回当前页面的链接,我假设该页面具有表单的处理代码。
Correction
您需要使用
the_permalink()
, 不
get_permalink()
. 有关原因,请参见
here.