我在页面中有三种不同的搜索表单。产品,餐馆和页面是不同的帖子类型。尝试通过隐藏输入类型在search.php中显示结果。它没有像我预期的那样显示结果。我的代码中有些东西是错误的。请建议或建议。
表1
<form role="search" method="get" action="<?php bloginfo('url'); ?>">
<input type="text" value="" name="s" id="s" />
<input type="hidden" value="Restaurant" name="post_type" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
表格2
<form role="search" method="get" action="<?php bloginfo('url'); ?>">
<input type="text" value="" name="s" id="s" />
<input type="hidden" value="Products" name="post_type" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
表格3
<form role="search" method="get" action="<?php bloginfo('url'); ?>">
<input type="text" name="search" placeholder="Search...">
<input type="hidden" name="post_type" value="Pages" />
</form>
以下是我的search.php结构
$myvalue = $_GET['post_type'];
if ($myvalue == "Restaurant"){
echo "res";
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'sanha-restau');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
if ( have_posts() ) :
while ( have_posts() ) : the_post();
echo '<ul><li><strong>';
echo get_the_title() . '</strong><br> (';
echo substr(get_the_excerpt(), 0, 200) . ') ';
echo '</li></ul>';
endwhile;
else :
get_template_part( 'content', 'none' );
endif;
} else if ($myvalue == "Products"){
echo "pro";
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'sanha-product');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
if ( have_posts() ) :
while ( have_posts() ) : the_post();
echo '<ul><li><strong>';
echo get_the_title() . '</strong><br> (';
echo substr(get_the_excerpt(), 0, 200) . ') ';
echo '</li></ul>';
endwhile;
else :
get_template_part( 'content', 'none' );
endif;
} else if ($myvalue == "Pages"){
echo "pages";
if ( have_posts() ) :
while ( have_posts() ) : the_post();
echo '<ul><li><strong>';
echo get_the_title() . '</strong><br> (';
echo substr(get_the_excerpt(), 0, 200) . ') ';
echo '</li></ul>';
endwhile;
else :
get_template_part( 'content', 'none' );
endif;
}
请咨询。感谢
答案 0 :(得分:0)
通过检查您的代码,您似乎希望搜索3种帖子类型
Products, Restaurants and Pages
根据文档,您可以使用post_type
数组来搜索多种帖子类型。
s
参数
Show posts based on a keyword search.
s (string) - Search keyword.
Show Posts based on a keyword search
Display posts that match the search term "abc":
注意:我使用abc
进行搜索您可以将其更改为esc_sql($_REQUEST['s'])
$searchQuery = new WP_Query(array(
'post_type' => array('products', 'restaurants','page'),
's' => 'abc' // <<-- change this to make it work --> esc_sql($_REQUEST['s'])
));
if ($searchQuery->have_posts() ) :
while ( $searchQuery->have_posts() ) : $searchQuery->the_post();
echo '<ul><li><strong>';
echo get_the_title() . '</strong><br> (';
echo substr(get_the_excerpt(), 0, 200) . ') ';
echo '</li></ul>';
endwhile;
else :
get_template_part( 'content', 'none' );
endif;
因此,搜索会有一个查询,无需使用add_filter
。
WP_Query
以上将在3种帖子类型中搜索您的关键字。
答案 1 :(得分:0)
function load_custom_search_template(){
if(isset($_REQUEST['custom_search'])){
require('search.php');
die();
}
}
add_action('init','load_custom_search_template');
此代码适用于所有
以及以下search.php的代码
$myquery = '';
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
if(isset($_GET['post_type'])) {
$type = $_GET['post_type'];
if($type == 'sanha-product') {
$query->set('post_type',array('sanha_product'));
$myquery = 'Products Found For : ';
}
elseif($type == 'sanha-restau'){
$query->set('post_type',array('sanha_restau'));
$myquery = 'Resaurants Found For : ';
}
elseif($type == 'pages'){
$query->set('post_type',array('pages'));
$myquery = 'Search Result For : ';
}
}
}
return $query;
}
add_filter('pre_get_posts','searchfilter');