Làm sao để quản lý media attachments tốt hơn?
Với những trang web có số lượng file upload lớn đặc biệt là file hình cho các bài viết thì đã nảy sinh ra 1 vấn đề đó là quản lý. Cách thường dùng là các bạn đặt tên cho phù hợp với file để search và sử dụng bộ lọc theo ngày hay theo tác giả đã được cung cấp mặc định bởi wordpress để lọc. Nhưng những tính năng đó còn chưa tốt cho việc quản lý. Giả sử mình muốn lọc theo loại file hay theo danh mục bài viết, … thì nó vẫn chưa đáp ứng được. Do đó hôm nay mình sẽ hướng dẫn các bạn viết thêm một số tính năng phân loại để giúp cho việc quản lý media attachments tốt hơn.
Để thêm 1 taxonomy có sẵn như category, tag hay bất kỳ taxonomy nào đã được đăng ký đến 1 post type, các bạn dùng hàm register_taxonomy_for_object_type với 2 tham số truyền vào lần lượt là taxonomy và post type.
Cú pháp như sau:
1
|
<?php register_taxonomy_for_object_type( $taxonomy , $object_type ); ?> |
Vậy để thêm category và tag của các bài viết vào phần quản lý media ta làm như sau:
Category:
1
2
3
4
5
6
7
|
function dvd_add_categories_to_attachments() { register_taxonomy_for_object_type( 'category' , 'attachment' ); } add_action( 'init' , 'dvd_add_categories_to_attachments' ); |
Tag:
1
2
3
4
5
6
7
|
function dvd_add_tags_to_attachments() { register_taxonomy_for_object_type( 'post_tag' , 'attachment' ); } add_action( 'init' , 'dvd_add_tags_to_attachments' ); |
Mở phần quản lý media lên để xem kết quả nào.
Bây giờ các bạn đã có thể cập nhật chuyên mục hay tag cho các file bằng cách edit file.
Ở trên mình đang dùng taxonomy có sẵn để phân loại. Bây giờ mình sẽ thêm 1 taxonomy mới để phân loại. Giả sử như mình thêm taxnomy dùng để phân loại theo loại file. Cách làm tương tự như các bạn đăng ký 1 taxnomy thôi.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
function dvd_add_media_taxonomy() { $labels = array ( 'name' => 'Types' , 'singular_name' => 'Types' , 'search_items' => 'Search Types' , 'all_items' => 'All Types' , 'parent_item' => 'Parent Types' , 'parent_item_colon' => 'Parent Types:' , 'edit_item' => 'Edit Types' , 'update_item' => 'Update Types' , 'add_new_item' => 'Add New Types' , 'new_item_name' => 'New Types Name' , 'menu_name' => 'Types' ); $args = array ( 'labels' => $labels , 'hierarchical' => true, 'query_var' => 'true' , 'rewrite' => 'true' , 'show_admin_column' => 'true' ); register_taxonomy( 'media_type' , 'attachment' , $args ); } add_action( 'init' , 'dvd_add_media_taxonomy' ); |
Đây là kết quả sau khi mình đã cập nhật:
Đơn giản phải không nào. Tương tự các bạn có thể thêm nhiều taxonomy khác nhau tùy theo nhu cầu phân loại của các bạn.
Muốn lọc theo term của taxonomy nào thì chỉ cần chọn vào term của taxonomy đó. Nhưng lọc theo kiểu này vẫn chưa sát vì chỉ mới lọc được duy nhất 1 taxonomy. Trường hợp muốn lọc theo nhiều taxonomy thì sao? Rất đơn giản chỉ cần làm theo vài bước hướng dẫn tiếp theo của mình bạn sẽ hiểu được cách giải quyết.
Đầu tiên mình sẽ dùng 1 action có tên restrict_manage_posts để thêm 2 select box vào cùng hàng với bulk actions. 2 select box này mình sẽ hiển thị tất cả các term của taxonomy mình cần hiển thị. Ở đây mình sẽ hiển thị category và custom taxonomy đã đăng ký ở trên là Types. Đây là code:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
function dvd_add_extra_media_filter() { $screen = get_current_screen(); if ( 'upload' == $screen ->id ) { $tax1 = "category" ; $tax2 = "media_type" ; $tax1_selected = isset( $_GET [ $tax1 ]) ? $_GET [ $tax1 ] : "" ; $tax2_selected = isset( $_GET [ $tax2 ]) ? $_GET [ $tax2 ] : "" ; wp_dropdown_categories( array ( 'show_option_all' => 'All categories' , 'taxonomy' => $tax1 , 'name' => $tax1 , 'hide_empty' => false, 'orderby' => 'name' , 'selected' => $tax1_selected )); wp_dropdown_categories( array ( 'show_option_all' => 'All types' , 'taxonomy' => $tax2 , 'name' => $tax2 , 'hide_empty' => false, 'orderby' => 'name' , 'selected' => $tax2_selected )); } } add_action( 'restrict_manage_posts' , 'dvd_add_extra_media_filter' ); |
Giải thích: mình kiểm tra screen hiện tại có phải là upload không vì mình chỉ muốn hiển thị 2 select box này ở trang upload sau đó dùng wp_dropdown_categories để show các term của taxonomy tương ứng.
Tiếp theo mình sẽ dùng action có tên parse_query để tùy chỉnh query cho phù hợp khi lọc theo categories và types.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
function dvd_custom_media_query( $query ) { global $pagenow ; //biến lưu trang hiện tại $tax1 = "category" ; $tax2 = "media_type" ; //tên 2 taxonomy trên select box $tax_query = array (); //mảng lưu các tham số taxonomy dùng để truyền vào query $q_vars = & $query ->query_vars; //tham chiếu đến đến mảng query_vars if (is_admin() && $pagenow == "upload.php" && isset( $q_vars [ "post_type" ]) && $q_vars [ "post_type" ] == "attachment" && isset( $_GET [ $tax1 ]) && is_numeric ( $_GET [ $tax1 ]) && $_GET [ $tax1 ] != 0) { //kiểm tra thông tin hợp lệ và thiết lập thêm tham số taxonomy cho query $tax1_query = array (); $tax1_query [ "taxonomy" ] = $tax1 ; $tax1_query [ "field" ] = "id" ; $tax1_query [ "terms" ] = $_GET [ $tax1 ]; $tax_query [] = $tax1_query ; } if (is_admin() && $pagenow == "upload.php" && isset( $q_vars [ "post_type" ]) && $q_vars [ "post_type" ] == "attachment" && isset( $_GET [ $tax2 ]) && is_numeric ( $_GET [ $tax2 ]) && $_GET [ $tax2 ] != 0) { $tax2_query = array (); $tax2_query [ "taxonomy" ] = $tax2 ; $tax2_query [ "field" ] = "id" ; $tax2_query [ "terms" ] = $_GET [ $tax2 ]; $tax_query [] = $tax2_query ; } $query ->set( "tax_query" , $tax_query ); } add_filter( 'parse_query' , 'dvd_custom_media_query' ); |
Ok, vậy là xong rồi. Bây giờ kiểm tra kết quả thôi.
Lời kết
Vậy là mình đã hướng dẫn xong cho các bạn cách thêm category, tag và custom taxonomy vào media attachments. Các bạn có thể tùy biến, tạo các taxnonomy phân loại phù hợp với website của các bạn. Hy vọng qua bài viết này có thể giúp các bạn quản lý media attachments của mình tốt hơn.
Liên Quan Khác
- Tổng hợp các mẹo vặt cực hay cho WordPress #1
- Tạo một khung phát nhạc MP3 và ZippyShare đơn giản trong bài
- Hướng dẫn cách report DMCA để bảo vệ bản quyền cho website của bạn
- Thiết lập tự động loại bỏ liên kết đến hình ảnh trong bài viết WordPress
- SMTP là gì? Hướng dẫn cách thiết lập SMTP Server riêng cho WordPress
- Bạn đã lãng quên tính năng Excerpt của WordPress chăng?
- Hiển thị tên tác giả bài viết lên các chia sẽ của Facebook cho WordPress
- 9 cách hạn chế trường hợp local attack trong WordPress
- Gửi email từ website WordPress “không đi”, hoặc bay vào hết thùng rác (Spam)… cách chỉnh lại như thế nào
- Làm cách nào để lấy được thông tin SMTP của Gmail chính xác 100%
- Code lấy thời gian thực (thứ ngày giờ hiện tại) trong PHP
- Code lên lịch đăng bài viết, comment trong site WordPress
- Cách sử dụng iThemes Security để tăng cường bảo mật cho WordPress
- Hướng dẫn tương tác với database (CSDL) bằng đối tượng $wpdb trong WordPress
- 5 bước giúp xây dựng bài bản chiến dịch social media hiệu quả
Leave a Reply