Wordpress - 禁用搜索功能

时间:2017-08-09 17:31:57

标签: wordpress search

我已将以下代码添加到functions.php中,以便出于性能原因禁用我的wordpress网站上的归档/抓取/网址搜索:

function disable_search( $query, $error = true ) {
  if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
  }
}

add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

这完全可以防止搜索,但也可以阻止在管理区域中搜索帖子。

有没有办法禁用用户搜索但仍允许管理员搜索?

目前,我的解决方法是删除此代码,执行必要的搜索,然后将其粘贴回来。

2 个答案:

答案 0 :(得分:5)

您是否尝试过is_admin功能?如果正在尝试显示仪表板或管理面板,它将返回true 。所以把这个函数放到你的代码中,它不会在Dashboard中激活:

function disable_search($query, $error = true)
{
    if (is_search() && !is_admin()) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;

        // to error

        if ($error == true) $query->is_404 = true;
    }
}

add_action('parse_query', 'disable_search');
add_filter('get_search_form', function(){ return null; });

或者:

function disable_search($query, $error = true)
{
    if (is_search()) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;

        // to error

        if ($error == true) $query->is_404 = true;
    }
}

if(!is_admin()){
    add_action('parse_query', 'disable_search');
    add_filter('get_search_form', function(){ return null; });
}

答案 1 :(得分:0)

对于PHP 7.2 +

,不推荐使用

create_function

这似乎有用(放入你的function.php):

function fb_filter_query( $query, $error = true ) {

    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars['s'] = false;
        $query->query['s'] = false;

        if ( $error == true )
            $query->is_404 = true;
    }
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', function() { return null;} );