WP_Query from searching post except and not page title?



我有一个名为"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');
    }

最新更新