我希望能够通过选择多个产品标签搜索我的WordPress Woocommerce商店。默认情况下,如果您向产品添加标签,它们在产品页面上是可见的,如果您单击一个标签,它会搜索标记相同的其他产品。这个搜索的结果看起来像这样:
http://localhost/ccloud/?product_tag=option1
如果您手动添加其他标签到此URL,它将搜索标记有两个选择的产品,如下所示:
http://localhost/ccloud/?product_tag=option1+option2
这是可行的,但显然我希望用户能够使用复选框来做到这一点。
我已经创建了这个表单(它不工作)
<form name="search_by_tag" action=/product_tag.php method="get">
<input type=checkbox name="option1">Option 1<br>
<input type=checkbox name="option2">Option 2<br>
<input type=checkbox name="option3">Option 3<br>
<input type=checkbox name="option4">Option 4<p>
<input type=submit value="Search">
</form>
我认为它不起作用,因为它没有正确发送动作。选择多个复选框并进行搜索的结果如下所示:
http://localhost/product_tag.php?option1=on&option2=on
我如何纠正url(第一部分缺少目录)并删除.php
部分等?如果我删除。php扩展名
您必须使用一点JavaScript才能使其工作,但您可以这样做。
HTML:<input type="checkbox" class="tags" value="red">Red<br>
<input type="checkbox" class="tags" value="blue">Blue<br>
<form name="search_by_tag" action="/ccloud/" method="get">
<input type="hidden" id="tags" name="product_tag" />
<input type="submit" value="Search"/>
</form>
jQuery: $(function() {
$('form').on('submit', function() {
var tags = [];
$('.tags:checked').each(function() {
tags.push($(this).val());
});
tags = tags.join(' ');
if (tags) $('#tags').val(tags);
else $('#tags').remove();
});
});
所以,我们正在做的是使用一个隐藏字段来存储选中的标签,并将复选框移出表单。然后,当它们提交时,我们填充隐藏字段,使其包含在查询字符串中。在URL中,空格变成+。
product_tag
需要是隐藏字段的名称,并且动作是/ccloud/
,因此您最终得到您想要的URL。下面是一个jsFiddle的操作
我在你的代码中看到的几个问题:
<form name="search_by_tag" action=/product_tag.php method="get">
<input type=checkbox name="option1">Option 1<br>
<input type=checkbox name="option2">Option 2<br>
<input type=checkbox name="option3">Option 3<br>
<input type=checkbox name="option4">Option 4<p>
<input type=submit value="Search">
</form>
type
属性应该用引号括起来。此外,您没有设置value
属性。为了让URL变成/product_tag
你需要去掉.php
然后把表单动作设置成完整的网站URL所以这应该更接近你想要的:
<form name="search_by_tag" action="http://my.great.site/product_tag" method="get">
<input type="checkbox" name="option1" value="option1">Option 1<br>
<input type="checkbox" name="option2" value="option2">Option 2<br>
<input type="checkbox" name="option3" value="option3">Option 3<br>
<input type="checkbox" name="option4" value="option4">Option 4<p>
<input type=submit value="Search">
</form>
也就是说,您需要添加更多的逻辑—通过PHP或JavaScript,就像用户dave
指出的那样—来获得这个集合。一个简单的get
是行不通的。