Swagger主题中的Pre_Get_Posts和BBPress

时间:2013-03-01 作者:Ben Racicot

在我使用的主题中有一个自定义项。php文件,其中以下代码发出一个pre\\u get\\u post函数,该函数将自定义post类型添加到原始查询对象中。

我知道你不能有条件地加载这个。。。它正在破坏论坛上的BBPress页面。php拒绝BBP完全加载某些帖子类型(主题、论坛等)。

  if (!is_admin()){

    add_filter(\'pre_get_posts\', \'query_post_type\');

    function query_post_type($query) {

          global $oswcPostTypes;

          if(empty( $query->query_vars[\'suppress_filters\'] ) ) {
            $post_type = get_query_var(\'post_type\');

            global $oswc_reviews;   
            // BEGIN CULPRIT CODE 
            if($post_type ) {
                $post_type = $post_type;
                $query->set(\'post_type\',$post_type);
                return $query;  
            // END CULPRIT CODE

            } elseif(!is_page() && !is_preview() && !is_attachment() && !is_search() ) {    
                $post_type = array(\'post\');
                foreach($oswcPostTypes->postTypes as $postType){
                    array_push($post_type, $postType->id);
                }
                $query->set(\'post_type\',$post_type);
                return $query;
            }   
          }
        }
    }
提前感谢,这是一个艰难的过程。

编辑:由于Brian McCulloh修复。他寄给我他的新主题,其中有一个修改过的PGP功能。旧的方法是在查询中保留某些帖子类型,例如论坛和主题PT。。。更正的代码:

if(!is_admin()) {   
    add_filter(\'pre_get_posts\', \'query_post_type\');
    function query_post_type($query) {
      //get review types
      global $oswcPostTypes;    
      if(empty($query->query_vars[\'suppress_filters\'])) {
        $post_type = get_query_var(\'post_type\');    

        if(!$post_type && !is_page() && !is_preview() && !is_attachment() && !is_search()) {    
            $post_type = array(\'post\');
            foreach($oswcPostTypes->postTypes as $postType){
                array_push($post_type, $postType->id);
            }
            $query->set(\'post_type\',$post_type);
            //the returned array contains the "post" post type and all of the user-defined review types
            return $query;              
        }
      }
    }
}

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

我不是百分之百清楚问题是什么,但我会先把条件放在函数内部,而不是包装整个函数。

add_filter(\'pre_get_posts\', \'query_post_type\');

function query_post_type($query) {

  if (!is_admin()){

      global $oswcPostTypes;

      if(empty( get_query_var(\'suppress_filters\' ) ) {
        $post_type = get_query_var(\'post_type\');
        //get theme options
        global $oswc_reviews;   
        if($post_type ) {
            $post_type = $post_type;
            set_query_var(\'post_type\',$post_type);
            return $query;  

        } elseif(!is_page() && !is_preview() && !is_attachment() && !is_search() ) {    
            $post_type = array(\'post\');
            foreach($oswcPostTypes->postTypes as $postType){
                array_push($post_type, $postType->id);
            }
           set_query_var(\'post_type\',$post_type);
            return $query;
        }   
      }
    }
}

结束

相关推荐

更改bbPress登录小工具中的头像比例

我在我的网站上使用bbPress,并且在我的侧栏上有(bbPress)登录小部件。有没有办法将默认图像大小从40更改为80或其他数字?以下是核心文件中的代码: <?php echo get_avatar( bbp_get_current_user_id(), \'40\' ); ?> 如何在不编辑核心文件的情况下更改默认的40 px我可以用某种方式过滤它吗?提前谢谢,你是我找到我这个问题答案的最后希望!