WP_Query从搜索帖子除了页面标题而不是页面标题?

时间:2014-04-29 14:22:39

标签: php wordpress

我有一个名为“公司”的自定义帖子类型和屏幕右上角的基本搜索。不幸的是,在提交基本搜索时,搜索结果会填充公司而不是实际页面,例如Resources或Tech Advisory Group。 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(); ?>

3 个答案:

答案 0 :(得分:0)

尝试使用您要搜索的帖子类型在搜索表单中添加隐藏的输入:

<input type="hidden" name="post_type" value="post_type_name" />

答案 1 :(得分:0)

在你的主题上,functions.php使用这段代码

function searchfilter($query) {

    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('page'));
    }

return $query;
}

add_filter('pre_get_posts','searchfilter');

答案 2 :(得分:0)

这是一个简单的解决方案。转到媒体库并搜索文件。如果搜索标题与图像标题相同并且没有显示结果,则表明您的查询正在运行猖獗。很可能这可以在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)需要有一个隐藏的输入,您可以通过其中一个条件点检索该输入以使用新查询引用新模板。不要尝试使用自定义帖子类型的条件语句,因为如果需要更改,则必须在多个位置更改此条件语句。以下是此条件的示例:

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');
    }