当前位置:首页 > CMS教程 > WordPress > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-03-19 21:10:08 浏览: 评论:0 

wordpress开发的项目越多,接触到的深层的东西就越多,比如各种post type 和coustom taxonomy 的定义,过滤,查询等等,这次帮北京一个客户使用wordpress开发一个企业应用,非常类似erp,使用wordpress做erp我还是第一次,而且还有很多很奇怪的需求.

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

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

  1. function work_restrict_manage_posts() {  
  2.     global $typenow;  
  3.     $args=array'public' => true, '_builtin' => false );  
  4.     $post_types = get_post_types($args);  
  5.     if ( in_array($typenow$post_types) ) {  
  6.     $filters = get_object_taxonomies($typenow);  
  7.         foreach ($filters as $tax_slug) {  
  8.             $tax_obj = get_taxonomy($tax_slug);  
  9.             wp_dropdown_categories(array(  
  10.                 'show_option_all' => __('所有 '.$tax_obj->label ),  
  11.                 'taxonomy' => $tax_slug,  
  12.                 'name' => $tax_obj->name,  
  13.                 'orderby' => 'term_order',  
  14.                 'selected' => $_GET[$tax_obj->query_var],  
  15.                 'hierarchical' => $tax_obj->hierarchical,  
  16.                 'show_count' => false,  
  17.                 'hide_empty' => false  
  18.             ));  
  19.         }  
  20.     }  
  21. }  
  22. function work_convert_restrict($query) {  
  23.     global $pagenow;  
  24.     global $typenow;  
  25.     if ($pagenow=='edit.php') {  
  26.         $filters = get_object_taxonomies($typenow);  
  27.         foreach ($filters as $tax_slug) {  
  28.             $var = &$query->query_vars[$tax_slug];  
  29.             if ( isset($var) && $var>0) {  
  30.                 $term = get_term_by('id',$var,$tax_slug);  
  31.                 $var = $term->slug;  
  32.             }  
  33.         }  
  34.     }  
  35.     return $query;  
  36. }  
  37. add_action( 'restrict_manage_posts''work_restrict_manage_posts' );  
  38. add_filter('parse_query','work_convert_restrict'); 

 

Tags: WordPress 自定义内容 过滤

分享到: