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]

5/5 - (1 bình chọn)

Trả lời

Nhắn tin qua Zalo

0932644183