WordPress 自定义文章类型添加后台分类筛选
网站定制客户提出需要为自定义文章类型(产品)的后台列表,添加一个产品分类筛选功能,要实现的效果如下图所示,其中“产品”为我们注册的自定义文章类型,“产品分类”为产品的一种自定义分类法。
方法一:
以下就是我们实现该功能的代码:
/*
* 自定义文章列表添加分类筛选
* https://www.wpdaxue.com/taxonomy-filter-for-custom-post-type.html
*/
function wpkj_product_taxonomy_filter() {
global $typenow;
$post_type = 'product'; // 这是文章类型的slug,需要根据实际情况修改
$taxonomy = 'product_category'; // 这是自定义分类法 taxonomy,需要根据实际修改
if ($typenow == $post_type) {
$selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);
wp_dropdown_categories(array(
'show_option_all' => sprintf( __( 'ALL %s', 'textdomain' ), $info_taxonomy->label ),
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $selected,
'hierarchical' => true,
'show_count' => true,
'hide_empty' => true,
'value_field' => 'slug'
));
};
}
add_action( 'restrict_manage_posts', 'wpkj_product_taxonomy_filter' );
注意看上面代码的 7-8 行,需要根据实际情况修改文章分类和分类法。
方法二:
function add_custom_taxonomy_filter() {
global $typenow;
$post_type = 'post'; // 替换为你的文章类型
$taxonomy = 'custom_category'; // 替换为你的自定义分类法名称
if ($typenow == $post_type) {
$selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
wp_dropdown_categories(array(
'show_option_all' => '全部',
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => $selected,
'hierarchical' => true,
'show_count' => true,
'hide_empty' => false,
));
}
}
add_action('restrict_manage_posts', 'add_custom_taxonomy_filter');