一聚教程网:一个值得你收藏的教程网站

热门教程

WordPress自定义内容类型列表中分类(custom taxonomy)的过滤

时间:2022-06-25 19:10:50 编辑:袖梨 来源:一聚教程网


这次帮北京一个客户使用wordpress开发一个企业应用,非常类似erp, 使用wordpress做erp我还是第一次,而且还有很多很奇怪的需求。

比如这次,在供应商管理里,我把供应商做成了一个自定义内容类型。 自定义类型中还有自定义分类, 客户要对自定义分类还要显示一个过滤器,比如默认的按月分类。

找了很久,终于找到下面的代码可以解决,利用到了wordpress的一个action(动作)和一个filter(过滤器)

 

 代码如下 复制代码
function work_restrict_manage_posts() {
    global $typenow;
    $args=array( 'public' => true, '_builtin' => false );
    $post_types = get_post_types($args);
    if ( in_array($typenow, $post_types) ) {
    $filters = get_object_taxonomies($typenow);
        foreach ($filters as $tax_slug) {
            $tax_obj = get_taxonomy($tax_slug);
            wp_dropdown_categories(array(
                'show_option_all' => __('所有 '.$tax_obj->label ),
                'taxonomy' => $tax_slug,
                'name' => $tax_obj->name,
                'orderby' => 'term_order',
                'selected' => $_GET[$tax_obj->query_var],
                'hierarchical' => $tax_obj->hierarchical,
                'show_count' => false,
                'hide_empty' => false
            ));
        }
    }
}
function work_convert_restrict($query) {
    global $pagenow;
    global $typenow;
    if ($pagenow=='edit.php') {
        $filters = get_object_taxonomies($typenow);
        foreach ($filters as $tax_slug) {
            $var = &$query->query_vars[$tax_slug];
            if ( isset($var) && $var>0) {
                $term = get_term_by('id',$var,$tax_slug);
                $var = $term->slug;
            }
        }
    }
    return $query;
}
add_action( 'restrict_manage_posts', 'work_restrict_manage_posts' );
add_filter('parse_query','work_convert_restrict');

热门栏目