以下是对我有用的东西。
Pree这个答案几乎达到了目的,但没有设置任何数据。我需要找到一种访问数组中数据的方法,我使用内爆来实现这一点。
这是我的最后一段代码,它使我能够创建一个搜索表单,循环并显示类别,允许用户通过任意数量的类别进行关键字搜索,如果关键字存在于所选的任何类别中,则显示结果:
我创建了一个searchform.php 文件,包括以下HTML:
<form id="searchform" method="get" action="<?php bloginfo(\'url\'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="Search..."></input>
<button type="submit">Search</button>
<div class="clear"></div>
<div class="search_category_section">
<?php
$args = array(\'parent\' => 0);
$categories = get_categories($args);
echo \'<div class="search_category_section">\';
foreach ($categories as $category) {
$thecatid = $category->cat_ID;
echo \'<div class="categorylist"><div class="parent_category_list_item"><input id="\', $thecatid, \'" type="checkbox" name="category_name[]" value="\', $category->slug, \'"><label for="\', $thecatid, \'">\', $category->name, \'</label></input></div>\';
$childcats=get_categories(array(\'parent\' => $thecatid));
foreach($childcats as $c) {
echo \'<div class="child_category_list_item"><input id="\', $c->cat_ID, \'" type="checkbox" name="category_name[]" value="\', $c->slug, \'"><label for="\', $c->cat_ID, \'">\', $c->name, \'</label></input></div>\';
}
echo \'</div>\';
}
?>
</div>
</fieldset>
然后,我的functions.php 具有以下代码:
<?php
function advanced_search_query($query) {
if($query->is_search()) {
$get_the_category_name = $_GET[\'category_name\'];
if (isset($get_the_category_name) && is_array($get_the_category_name)) {
$catnames = implode(",",$get_the_category_name);
$query->set(\'category_name\', $catnames);
return $query;
}
}
}
add_action(\'pre_get_posts\', \'advanced_search_query\');
?>
如果您这样做:
var_dump($get_the_category_name);
您将获得:
array(2) { [0]=> string(22) "category-a" [1]=> string(25) "category-b" }
对其运行内爆()
string(48) "human-element-analysis,latent-defects-check-list"
将该字符串粘贴到变量中,在查询中将其设置为category\\u name,win。
再次感谢Preethi为我指明了正确的方向,并希望以上内容能帮助任何希望这样做的人!