【发布时间】:2014-04-28 21:57:25
【问题描述】:
我的主题中有一个名为投资组合的自定义帖子类型。它的类别称为项目类别。我正在尝试为登录成员排除项目类别。我的第一个问题是,我能否像普通帖子类别一样引用项目类别?
这是我目前没有工作的代码。我已经阅读了法典,但我认为我遗漏了一些东西。 pre_get_posts Codex
function exclude_category( $query ) {
if ( is_user_logged_in() && $query->is_main_query() ) {
$query->set( 'cat', '-94');
}
}
add_action( 'pre_get_posts', 'exclude_category' );
这是自定义帖子类型的分类法
#-----------------------------------------------------------------#
# Taxonomy attached to portfolio
#-----------------------------------------------------------------#
$category_labels = array(
'name' => __( 'Project Categories', NECTAR_THEME_NAME),
'singular_name' => __( 'Project Category', NECTAR_THEME_NAME),
'search_items' => __( 'Search Project Categories', NECTAR_THEME_NAME),
'all_items' => __( 'All Project Categories', NECTAR_THEME_NAME),
'parent_item' => __( 'Parent Project Category', NECTAR_THEME_NAME),
'edit_item' => __( 'Edit Project Category', NECTAR_THEME_NAME),
'update_item' => __( 'Update Project Category', NECTAR_THEME_NAME),
'add_new_item' => __( 'Add New Project Category', NECTAR_THEME_NAME),
'menu_name' => __( 'Project Categories', NECTAR_THEME_NAME)
);
register_taxonomy("project-type",
array("portfolio"),
array("hierarchical" => true,
'labels' => $category_labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'project-type' )
));
$attributes_labels = array(
'name' => __( 'Project Attributes', NECTAR_THEME_NAME),
'singular_name' => __( 'Project Attribute', NECTAR_THEME_NAME),
'search_items' => __( 'Search Project Attributes', NECTAR_THEME_NAME),
'all_items' => __( 'All Project Attributes', NECTAR_THEME_NAME),
'parent_item' => __( 'Parent Project Attribute', NECTAR_THEME_NAME),
'edit_item' => __( 'Edit Project Attribute', NECTAR_THEME_NAME),
'update_item' => __( 'Update Project Attribute', NECTAR_THEME_NAME),
'add_new_item' => __( 'Add New Project Attribute', NECTAR_THEME_NAME),
'new_item_name' => __( 'New Project Attribute', NECTAR_THEME_NAME),
'menu_name' => __( 'Project Attributes', NECTAR_THEME_NAME)
);
register_taxonomy('project-attributes',
array('portfolio'),
array('hierarchical' => true,
'labels' => $attributes_labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'project-attributes' )
));
我没有收到任何错误,但我登录时没有排除该类别。
任何帮助将不胜感激。
谢谢
更新:
我也试过这些,但没有运气
function exclude_category( $query ) {
if ( is_user_logged_in() && $query->is_main_query() ) {
$taxquery = array(
array(
'post_type' => 'portfolio',
'taxonomy' => 'project-type',
'field' => 'id',
'terms' => array( 94 ),
'operator' => 'NOT IN'
)
);
$query->set( 'tax_query', $taxquery);
}
}
add_action( 'pre_get_posts', 'exclude_category' );
还有这个
function exclude_category( $query ) {
if ( is_user_logged_in() && $query->is_main_query() ) {
$taxquery = array(
array(
'post_type' => 'portfolio',
'taxonomy' => 'project-type',
'field' => 'slug',
'terms' => 'preview',
'operator' => 'NOT IN'
)
);
$query->set( 'tax_query', $taxquery);
}
}
add_action( 'pre_get_posts', 'exclude_category' );
【问题讨论】: