Thêm filter lọc cho post type wordpress

Tạo bộ lọc filter cho taxonomy wordpress

Thêm filter lọc cho post type wordpress

Sau một thời gian thiết kế website wordpress , nhận thấy wordpress còn thiếu một số phẩn lọc theo taxonomy post type wordpress,bài viết này sẽ hướng dẫn code bổ sụng lọc (filter) post cho post type wordpress. Tham khảo : Thiết kế website nhà hàng Tạo post type wordpress : Sau khi tạo post type wordpress ở đây là sản phẩm : tao filter post for post type wordpress Bước 1 : Tạo Filter với dropdown select taxonomy Bạn chỉ cần add vài dòng code sau cho hook restrict_manage_posts [crayon] add_filter(‘parse_query’, ‘tsm_convert_id_to_term_in_query’); function tsm_convert_id_to_term_in_query($query) { global $pagenow; $post_type = ‘products’; // change to your post type $taxonomy = ‘list-products’; // 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; } } [/crayon] với post type và taxonomy tương úng mà bạn tạo, sau khi add dòng code này bạn sẽ thấy Tạo bộ lọc filter cho taxonomy wordpress [crayon] add_action(‘restrict_manage_posts’, ‘tsm_filter_post_type_by_taxonomy’); function tsm_filter_post_type_by_taxonomy() { global $typenow; $post_type = ‘products’; // change to your post type $taxonomy = ‘list-products’; // 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’ => __(” {$info_taxonomy->label}”), ‘taxonomy’ => $taxonomy, ‘name’ => $taxonomy, ‘orderby’ => ‘name’, ‘selected’ => $selected, ‘show_count’ => true, ‘hide_empty’ => true, )); }; } [/crayon] Tiếp theo bạn cần xử lí query với dòng code sau : [crayon] add_filter(‘parse_query’, ‘tsm_convert_id_to_term_in_query’); function tsm_convert_id_to_term_in_query($query) { global $pagenow; $post_type = ‘products’; // change to your post type $taxonomy = ‘list-products’; // 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; } } [/crayon] đây là toàn bộ source cocde trên , bạn copy file funcitons.php trong theme wordpress [crayon] add_action(‘restrict_manage_posts’, ‘tsm_filter_post_type_by_taxonomy’); function tsm_filter_post_type_by_taxonomy() { global $typenow; $post_type = ‘products’; // change to your post type $taxonomy = ‘list-products’; // 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’ => __(” {$info_taxonomy->label}”), ‘taxonomy’ => $taxonomy, ‘name’ => $taxonomy, ‘orderby’ => ‘name’, ‘selected’ => $selected, ‘show_count’ => true, ‘hide_empty’ => true, )); }; } /** * Filter posts by taxonomy in admin */ add_filter(‘parse_query’, ‘tsm_convert_id_to_term_in_query’); function tsm_convert_id_to_term_in_query($query) { global $pagenow; $post_type = ‘products’; // change to your post type $taxonomy = ‘list-products’; // 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; } } [/crayon]

Share this post

Trả lời

Email của bạn sẽ không được hiển thị công khai.

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

If you agree to these terms, please click here.


Chat Zalo

0932644183