Đây là đoạn code nhỏ dùng để tạo bộ lọc custom taxonomy trong admin custom post type CMS wordpress. Để có thể dễ dàng quản lý bài viết trên site. Giao diện như bên dưới.
Vẫn như củ các bạn copy code và đặt vào file functions.php thôi nhưng chú ý 1 số thông số như sau:
1.Hook : Mình sử dung 2 hook là restrict_manage_posts và parse_query.
restrict_manage_posts để lấy data taxonomy và hiển thị ra dạng dropdown taxonomy
parse_query cải tạo lại bộ lọc để nó có thể filter thêm cái taxonomy mình mới thêm.
2.Biến: Bạn thay biến post_type và taxonomy thành của mình để sử dụng nhé.
3.Code đây
add_action('restrict_manage_posts', 'tsm_filter_post_type_by_taxonomy'); function tsm_filter_post_type_by_taxonomy() { global $typenow; $post_type = 'project'; // change to your post type $taxonomy = 'kind'; // change to your taxonomy if ($typenow == $post_type) { $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : ''; $info_taxonomy = get_taxonomy($taxonomy); wp_dropdown_categories(array( 'show_option_all' => __("Lọc {$info_taxonomy->label}"), 'taxonomy' => $taxonomy, 'name' => $taxonomy, 'orderby' => 'name', 'selected' => $selected, 'show_count' => true, 'hide_empty' => true, )); }; } /** * Filter posts by taxonomy in admin * @author Hoang Thuc * @link https://hoangthuc.com/bo-loc-taxonomy-trong-admin-custom-post */ add_filter('parse_query', 'tsm_convert_id_to_term_in_query'); function tsm_convert_id_to_term_in_query($query) { global $pagenow; $post_type = 'project'; // change to your post type $taxonomy = 'kind'; // change to your taxonomy $q_vars = &$query->query_vars; if ( $pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == $post_type && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0 ) { $term = get_term_by('id', $q_vars[$taxonomy], $taxonomy); $q_vars[$taxonomy] = $term->slug; } }
Chúc các bạn thành công !
… [Trackback]
[…] Read More to that Topic: hoangthuc.com/bo-loc-taxonomy-trong-admin-custom-post/ […]