pre_get_posts и BBPress в теме Swagger

В теме, которую я использую, есть файл custom.php, где следующий код вызывает функцию pre_get_post, которая добавляет пользовательские типы сообщений в исходный объект запроса.

Я узнал, что вы не можете условно загрузить это … и он разбивает страницы BBPress на forums.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; } } } } 

Спасибо заранее, это тяжело.

EDIT: Исправлено благодаря Брайану Маккалло. Он прислал мне свою новую тему, которая имела пересмотренную функцию 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; } } } } 

Solutions Collecting From Web of "pre_get_posts и BBPress в теме Swagger"

Я не на 100% понимаю, в чем проблема, но я бы начал с включения условий внутри функции, а не для обертывания всей функции.

 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; } } } }