代码之家  ›  专栏  ›  技术社区  ›  Gufran Hasan

自定义帖子类型搜索应该适用于前端而不是管理员

  •  2
  • Gufran Hasan  · 技术社区  · 6 年前

    我已经定制了特定的搜索 Custom Post Type 使用行动钩 pre_get_posts . 它的工作很好,但问题是它也适用于 wp-admin

    function basket_pre_get_posts($query) {
        if( is_search() && $query->is_main_query() ) {
            $query->set('post_type', 'basket');
        } 
    }
    add_action( 'pre_get_posts', 'basket_pre_get_posts' );
    

    自定义帖子类型: basket

    3 回复  |  直到 6 年前
        1
  •  3
  •   Sheeba Siddiqui    6 年前

    你应该把这个条件说成:

    if( is_admin() ) {
     return;
    }
    

    如果是admin,则返回而不应用它。

    function basket_pre_get_posts($query) {
    
       if( is_admin() ) {
         return;
        }
    
        if( is_search() && $query->is_main_query() ) {
            $query->set('post_type', 'basket');
        } 
    }
    add_action( 'pre_get_posts', 'basket_pre_get_posts' );
    
        2
  •  1
  •   Bhavesh Taneja    6 年前

    function basket_pre_get_posts($query) {
        if ( !is_admin() ) {
           if( is_search() && $query->is_main_query() ) {
                $query->set('post_type', 'basket');
           } 
        }
    }
    add_action( 'pre_get_posts', 'basket_pre_get_posts' );
    
        3
  •  0
  •   Poornima    6 年前
    You just need to check `is_admin` before applying filter.
    
    function basket_pre_get_posts($query) {
    
        if( is_admin() ) {
            return;
        }
        if( is_search() && $query->is_main_query() ) {
            $query->set('post_type', 'basket');
        } 
    }
    add_action( 'pre_get_posts', 'basket_pre_get_posts' );