从搜索结果中排除顶级页面

时间:2013-10-30 作者:Nicolas

使用以下代码,我可以排除所有顶级帖子和页面,但我只想将其应用于页面,而不是帖子(但我仍然希望结果中的所有帖子):

function search_filter( $query )
{
    if(
        $query->is_search 
        AND $query->is_main_query()
        )
    {
        $query->set( \'post_parent__not_in\', array( 0 ) );
        $query->set( \'post_type\', array( \'post\', \'page\' ) );
    }
    return $query;
}
目前,我所有的帖子都有0个作为post\\u父项,因此它们都被排除在结果之外。

1 个回复
SO网友:birgire

我想知道这是否适用于您:

function search_filter( $query )
{
    if( $query->is_search AND $query->is_main_query() )
    {
        // $query->set( \'post_parent__not_in\', array( 0 ) ); // We comment this out here 
        $query->set( \'post_type\', array( \'post\', \'page\' ) );
    }
    return $query;
}
add_action( \'pre_get_posts\', \'search_filter\' );
以及

function wpse_120638( $where, $query ) 
{
    global $wpdb;

    if( $query->is_search AND $query->is_main_query() )
    {
            $from = "AND $wpdb->posts.post_type IN (\'post\', \'page\')";
            $to   = "AND ( ( $wpdb->posts.post_parent NOT IN (0) 
                     AND $wpdb->posts.post_type IN (\'page\') ) 
                     OR $wpdb->posts.post_type IN (\'post\') ) ";

        $where = str_replace( $from, $to, $where );                                   
    }

    return $where;
}
add_filter( \'posts_where\', \'wpse_120638\', 10, 2 );

结束

相关推荐

WP_User_Query not searching

我目前有以下代码,在user\\u business表中有一个名为“Clark Farm”的用户。下面的代码不返回任何内容。如果删除搜索词,则会列出所有用户。我正在试图确定为什么搜索不起作用。。<?php /** * @package WordPress * @subpackage themename */ get_header(); ?> <?php $url = $_SERVER[\'REQUEST_U