WordPress自定义内容类型列表中分类(custom taxonomy)的过滤
wordpress开发的项目越多,接触到的深层的东西就越多,比如各种post type 和coustom taxonomy 的定义,过滤,查询等等,这次帮北京一个客户使用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' );
查看更多关于WordPress自定义内容类型列表中分类(custom taxono的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did8597