WordPress 自定义文章类型添加后台分类筛选

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');