从管理员中排除ADD_FILTER

时间:2013-05-28 作者:Brob

我为前端搜索创建了一个自定义筛选工具,其中还包括一个特定的用户组。

将函数添加到我使用的搜索中

add_filter(\'pre_get_posts\',\'my_filter_the_search\',10,1);

function my_filter_the_search($query){

    $post_type = filter_input(INPUT_GET, \'post_type\', FILTER_SANITIZE_STRING);

    if($post_type == \'document\'):

        add_filter( \'posts_search\', \'__search_by_title_only\', 500, 2 );

        //Get array of slugs of checked terms
        $terms = (array) $_GET[\'post_type\'];



        //Tax_query array
        $tax_query = array(array(
            \'taxonomy\' => \'access\',
            \'terms\' => \'basic-user\',
            \'field\' => \'slug\',
        ));


        //Tell the query to filter by tax
        $query->set(\'tax_query\', $tax_query);

        return $query;

    endif;
}
这似乎影响了后端中自定义帖子类型的列表。

如何仅在网站前端使用此功能?

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

仅当函数不是后端时才钩住它。

if( !is_admin() ){
    add_filter(\'pre_get_posts\',\'my_filter_the_search\',10,1);
}

SO网友:kaiser

只要做一个var_dump( $query ); 在回调中查看对象属性。您可以使用的属性之一是is_admin.

// functions.php
function my_search_filter($query) {
    if ( $query->is_admin ) {
        // do/set something on query
        return $query;
    }

    return $query;
}
add_filter(\'pre_get_posts\',\'my_search_filter\');
使用is\\u admin()全局函数也可以。

结束

相关推荐

unit testing admin password

我正在为我的插件编写单元测试,我需要一个登录的用户来测试,但我在任何地方都找不到管理员密码。有人知道默认的管理员密码是什么吗?我正在扩展WP_UnitTestCase 并从https://unit-tests.svn.wordpress.org/trunk.我目前的代码:<?php require_once(\'myPlugin.php\'); class MyPluginTest extends WP_UnitTestCase{ function