我正在构建一个wordpress主题,需要一个带有单选按钮和下拉菜单的高级搜索表单。我通过使用POST方法创建表单并在“搜索”页面上提取数据来使其工作,以便在加载页面之前更新$ wp_query。这是我使用的代码。
表格
echo'<div class="header-img">
<form method="post" class="cat-search" action="'.esc_url( home_url( '/search' ) ).'" role="search" >
<select name="category">';
foreach ( $categories as $category ) {
echo'<option value="'.$category->slug.'">'.$category->name.'</option>';
}
echo'</select>
<input type="radio" name="gender" value="male"> Male<br>
<input type="radio" name="gender" value="female"> Female<br>
<input value="Search" type="submit" />
</form>
</div>';
搜索页面
$cat = esc_html($_POST["category"]);
$gen = esc_html($_POST["gender"]);
if($_POST["gender"]) {
$cat_array = array($cat,$gen);
$cat_string = implode("+", $cat_array);
} else {
$cat_string = $cat;
}
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'order' => 'DESC',
'paged' => get_query_var( 'paged' ),
'category_name' => $cat_string,
);
这很有用,但由于我不是PHP方面的专家,我想知道这是否是正确的方法,或者我的代码中是否存在潜在的漏洞。
旁注:
我首先尝试使用GET方法,但在提交之前我无法找到修改网址的方法。提交表单时,URL的名称/值对就像这样:/?s = a&amp; gender = male
这不起作用,因为搜索需要像这样:/?s = a + male
我知道GET方法是更好的方法,但我无法弄明白。如果有人知道如何在提交之前修改网址,我可能会更改我的代码以使用GET方法。
答案 0 :(得分:0)
需要考虑的事项:
传统上,当使用 GET 方法提交表单时,输入数据将附加到请求的 URL,例如example.com/page1/form.php?name1=value1&name2=value2
我敢肯定有办法解决这个问题,但如果您的配置确实如此,您最终可能会遇到搜索引擎的一些问题。
从 SEO 的角度来看,这可能很糟糕,原因有两个:
仅供参考。我意识到这已经 3 年了,所以希望您能够在提交之前解决修改 url 的潜在问题(当然还有安全方面)。