我有一个名为"Company"的自定义帖子类型,屏幕右上角有一个基本搜索。不幸的是,当提交基本搜索时,搜索结果填充的是公司,而不是资源或技术咨询小组等实际页面。http://labbureau.wpengine.com/
我修改了我的自定义查询,只搜索页面,忽略所有公司帖子。然而,基本搜索仍然显示公司,而不是页面的实际标题。对此该怎么办?
以下是我的自定义查询:
$keyword = $_GET['s'];
$wp_query = new WP_Query(
array(
's' => $keyword,
'post_type' => 'page',
'tax_query' => array(
'taxonomy' => 'company',
'operator' => 'NOT IN'
),
'orderby' => 'title'
)
);
循环开始:
<?php if ( $wp_query->have_posts() ) while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
尝试在搜索表单中添加隐藏输入,并使用您想要搜索的帖子类型:
<input type="hidden" name="post_type" value="post_type_name" />
在您的主题函数.php上使用以下代码
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
这里有一个简单的解决方案。转到媒体库并搜索文件。如果搜索标题与图像标题相同,但没有显示任何结果,则表示存在冲突的查询,该查询正在猖獗运行。这很可能可以在functions.php文件中找到,并表示为如下所示的过滤器:
function search_filter( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array('company') );
}
return $query;
}
add_filter('pre_get_posts','search_filter');
function.php文件是最棒的,它将取代你网站上所有其他自定义的帖子类型。如果你有多个搜索,无论你是否在模板中创建新的WordPress查询,他们都会搜索公司的帖子类型。您需要对add_filter进行注释。在本例中,您需要为两个不同的搜索循环创建一个条件语句。您的一个搜索模板(HTML)需要有一个隐藏的输入,该输入可以由您的条件点之一检索,以使用新查询引用新模板。不要尝试使用自定义post类型的条件语句,因为如果需要更改,则必须在多个位置进行更改。下面是这个条件的一个例子:
if(isset($_GET['search_simple']) && $_GET['search_simple'] = 'search' && !isset($_GET['hdr-search']))
{
get_template_part('loop-search');
}
else if(isset($_GET['search_simple']) && $_GET['search_simple'] = 'search' && isset($_GET['hdr-search']))
{
get_template_part('loop-search2');
}
else
{
get_template_part('loop-search-blog');
}