我搞砸了管理员搜索功能。帮助!

时间:2015-06-26 作者:zipadee

这一切的开始是因为,在前端,我希望搜索查询包括来自分类法和自定义元的术语。因此,在谷歌搜索之后,我找到了以下代码,并将其添加到了我的函数文件中:

    add_filter(\'posts_where\', \'advanced_search_query\' ); 
    function advanced_search_query( $where )
    {
    if( is_search() ) {

global $wpdb;
$query = get_search_query();
$query = like_escape( $query );

// include postmeta in search
 $where .=" OR {$wpdb->posts}.ID IN (SELECT {$wpdb->postmeta}.post_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->postmeta}.meta_key = \'bible_reference\' AND {$wpdb->postmeta}.meta_value LIKE \'%$query%\' AND {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id)";

 // include taxonomy in search
$where .=" OR {$wpdb->posts}.ID IN (SELECT {$wpdb->posts}.ID FROM {$wpdb->posts},{$wpdb->term_relationships},{$wpdb->terms} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND {$wpdb->term_relationships}.term_taxonomy_id = {$wpdb->terms}.term_id AND {$wpdb->terms}.name LIKE \'%$query%\')";


if(WP_DEBUG)var_dump($where);
}
return $where;
    }
这对我的前端搜索很有帮助。然而,我后来发现管理员搜索现在已转到pot。例如,如果我在仪表板中的页面列表中搜索,它只显示来自自定义帖子类型的结果。而且,如果我再次尝试搜索,一旦显示第一批结果,我就会收到一个错误:“无效的帖子类型”。

我尝试使用remove\\u filter()删除过滤器,但似乎没有任何效果。

有人能帮忙吗?

1 个回复
SO网友:Karun

你可以检查一下is_admin 或不在函数的第一行

add_filter(\'posts_where\', \'advanced_search_query\' ); 
function advanced_search_query( $where )
{
    if(is_admin()){
        return $where;
    }
    if( is_search() ) {
        global $wpdb;
        $query = get_search_query();
        $query = like_escape( $query );

        // include postmeta in search
         $where .=" OR {$wpdb->posts}.ID IN (SELECT {$wpdb->postmeta}.post_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->postmeta}.meta_key = \'bible_reference\' AND {$wpdb->postmeta}.meta_value LIKE \'%$query%\' AND {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id)";

         // include taxonomy in search
        $where .=" OR {$wpdb->posts}.ID IN (SELECT {$wpdb->posts}.ID FROM {$wpdb->posts},{$wpdb->term_relationships},{$wpdb->terms} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND {$wpdb->term_relationships}.term_taxonomy_id = {$wpdb->terms}.term_id AND {$wpdb->terms}.name LIKE \'%$query%\')";


        if(WP_DEBUG)var_dump($where);
    }
    return $where;
}

结束

相关推荐

Where is search.php?

我在Wordpress 4.0.1上有一个网站,但我找不到搜索。php。数据库批处理过程已将模板应用于默认搜索结果页面,但我现在找不到该页面以将其更改回原来的页面。如何更改此页面的模板?在我的主题中创建一个新的“search.php”会有帮助吗?如果是,此文件应包含哪些内容?