我在我的默认博客帖子搜索功能中添加自定义Woocommerce(产品)搜索表单。我将在同一页面上显示两个搜索表单。搜索表单还应允许在下拉列表中选择的预定义产品类别中进行搜索。不幸的是,在下拉列表中设置后,类别中的搜索始终不会返回任何结果。如果输入了搜索短语,请注意。如果没有输入搜索短语,则至少应显示所选类别的产品。知道如何解决我的问题或任何更好的方法来实现我的目标吗?
1。我将以下代码放入我的functions.php中,以返回自定义后期类型(产品)的类别下拉列表
function test_dropdown_product_categories($show_option_none, $name, $selected = '') {
return apply_filters('test_dropdown_product_categories', wp_dropdown_categories(array('hierarchical' => true, 'taxonomy' => 'product_cat', 'show_option_none' => $show_option_none, 'exclude' => '1', 'hide_empty' => 0, 'name' => $name, 'orderby' => 'name', 'selected' => $selected, 'echo' => 0, 'class' => 'form-control')));
}
2. 要分隔两个html搜索表单,我使用了不同的ID(s1和s2)和值(1和2)。两种形式都很好。以下是自定义帖子类型产品的表单
<form method="get" id="s2" action="<?php echo home_url('/'); ?>" class="form-inline">
<input class="form-control input-sm" type="search" name="s" value="<?php the_search_query(); ?>" placeholder="<?php _e('Enter search phrase...', 'test'); ?>" />
<?php
echo test_dropdown_product_categories(__('All categories', 'test'), 'category', intval(isset($_GET['category'])));
?>
<input type="hidden" id="s2" name="filter" value="2" />
<button class="button btn-test" type="submit"><?php _e('Start Searching', 'test'); ?></button>
</form>
3. 然后我创建了两个名为&#34; search-posts.php&#34;的自定义search.php文件。和&#34; search-products.php&#34;
4. 要使用正确的自定义搜索文件,我将以下内容放入search.php文件中
<?php
if(isset($_GET['filter'])) {
$type = $_GET['filter'];
if($type == '1') {
load_template( dirname( __FILE__ ) . '/search-posts.php');
} elseif($type == '2') {
load_template( dirname( __FILE__ ) . '/search-products.php');
}
}
?>
5. 然后我使用以下代码过滤search-products.php中的搜索
<?php
if (isset($_GET['filter']) && $_GET['filter'] == '2') {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if (isset($_GET['category']) && $_GET['category'] != '-1') {
$args_category = array(
'category__in' => intval($_GET['category'])
);
} else {
$args_category = array();
}
$orderby = ''; // To remove Notice ERROR when "WP-DEBUG" is "true"
$args = array(
's' => get_search_query(),
'orderby' => $orderby,
'order' => $order,
'post_type' => 'product',
'meta_key' => $meta_key,
'paged' => $paged
);
$args = array_merge($args_category, $args);
query_posts($args);
}
get_template_part('index', 'test');
?>
6。我在搜索产品类别后生成以下网址 - 但没有任何结果
mysite.com/online-shop/?s=&category=23&filter=2
mysite.com/online-shop/?s=test&category=23&filter=2
视觉体验:)