有没有办法使is_earch()始终返回FALSE

时间:2015-05-27 作者:user4951

我正在制作一个插件,当用户输入错误的URL时显示相关帖子。。。

样品是这样的

http://diskonblog.net/gandaria/hellow

我根本不想改变主题。但是,为了编写代码,我将主题改为显示is\\u search()shows 1。

我应该怎么做才能在执行主题时显示为\\u search(),而不是false

我试过了

function returnfalse( ){
    return false;
}
add_filter (\'is_search\',\'returnfalse\');
但那没用。

插件中的代码如下:

class RandomPosts {
    function orderby($orderby) {
    if ( get_query_var(\'random\') == \'true\' )
    return "RAND()";
    else
    return $orderby;
    }

    function register_query_var($vars) {
        $vars[] = \'random\';
        return $vars;
    }
}
add_filter( \'posts_orderby\', array(\'RandomPosts\', \'orderby\') );
add_filter( \'query_vars\', array(\'RandomPosts\', \'register_query_var\') );

function query_random_posts($query) {

    return query_posts($query . \'&random=true\');
}
为了检查错误,我简化了代码

function setUp404Template($toInclude = "default")
{

    header("HTTP/1.1 200 OK");

    //queryBasedOnPage ();
    query_posts(\'&random=true\');
    if ($toInclude=="default")
    {
        $toInclude= get_template_directory() . "/index.php"; //Can also require(TEMPLATEPATH . "/search.php"); if exist
    }
    require($toInclude); 


}

function redirect_404() {
    global $options, $wp_query;
    if ($wp_query->is_404) {
     setUp404Template();
       // $redirect_404_url = esc_url(get_permalink(get_page_by_title($page_title))); 
       // wp_redirect( $redirect_404_url );

        exit();


    }
}
一切正常。

但是,如果我改变query_posts(\'&random=true\');

query_posts(\'s=makan ikan&random=true\');
is\\u search()标志已打开。

基本上,我希望能够返回实际相关的帖子,然后将is\\u search()设置为false。

1 个回复
SO网友:Tiago Gouvêa

要使is\\u search()始终返回false,可以使用:

add_action( \'parse_query\', \'search_even_empty\' );
function search_even_empty($query)
{
    $query->is_search = false;    
}

结束

相关推荐