在我使用的主题中有一个自定义项。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;
}
}
}
}
最合适的回答,由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;
}
}
}
}