LẬP TRÌNH PLUGIN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 08: Metadata API trong WordPress

Ở bài trước chúng ta đã tìm hiểu về Custom Meta Boxes và mình cũng có đề cập đến Metadata căn bản, chính vì quá căn bản nên trong bài này mình sẽ tìm hiểu một số cách sử dụng nâng cao hơn.

WordPress sử dụng mô hình EAV nhằm giúp lập trình viên có thể tùy biến theo từng dự án. Ví dụ bạn muốn tạo một website bán hàng với các sản phẩm đầy đủ các thuộc tính như kích thước, màu sắc thì bạn có thể sử dụng bảng meta để lưu trữ các thông tin đó. Vấn đề này mình có nói rõ ở bài Meta Boxes rồi nên bạn có thể quay lại tham khảo trước khi đọc bài này nhé.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Metadata API trong WordPress

Trong WordPress có nhiều table chứa bài viết, kèm theo mỗi table như vậy chúng ta sẽ thấy một bảng metadata. Ví dụ chúng ta có bảng commentmeta, postmeta, termmeta, usermeta. Và để xử lý các thao tác thêm, xóa, sửa các metadata thì WordPress cung cấp cho chúng ta bốn hàm như sau:

Đây là bốn hàm xử lý chung chung và về cách sử dụng thì bạn có thể click vào từng hàm để xem chi tiết kèm các ví dụ một cách rõ ràng hơn, hoặc bạn cũng có thể xem phần giải thích dưới đây.

add_metadata()

Hàm này thêm một thông tin meta vào cơ sở dữ liệu, cấu trúc của nó như sau:

add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique = false)

Trong đó:

  • $meta_type: Tên đối tượng metadata. Ví dụ post, page, comment, term
  • $object_id: Khóa ngoại tham chiếu đến table chính. Ví dụ cần lưu trữ thông tin của bài post có ID = 12 thì lúc này giá trị của $object_id là 12.
  • $meta_key: Key của Meta data
  • $meta_value: Giá trị của Meta data
  • $unique: Nếu bằng true thì key $meta_key sẽ là duy nhất, ngược lại bạn có thể thêm nhiều field với $meta_key giống nhau.

delete_metadata()

Hàm này xóa một hoặc nhiều metas ra khỏi cơ sở dữ liệu, cấu trúc như sau:

delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $delete_all = false)

Trong đó các tham số truyền vào được giải thích như trong hàm add_metadata(). Riêng tham số

  • $delete_all sẽ có giá trị true hoặc false, nếu true thì nó xóa hết tất cả các field có key trùng với $meta_key, ngược lại nó chỉ xóa field có key trùng với $meta_key và có object_id trùng với $object_id.
  • $meta_value nếu bạn thiết lập giá trị cho tham số này thì nó sẽ bổ sung thêm một điều kiện xóa đó là giá trị của key meta phải bằng với $meta_value.

get_metadata()

Hàm này dùng để lấy một metadata trong cơ sở dữ liệu, cấu trúc của nó như sau:

get_metadata($meta_type, $object_id, $meta_key = '', $single = false)

Hai tham số đầu thì quá quen thuộc rồi, riêng tham số $single sẽ quyết định kết quả trả về của hàm này. Nếu $single = true thì nó sẽ trả về giá trị của $meta_key, ngược lại nó sẽ trả về một mảng chứa tất cả các thông tin của record đó.

update_metadata()

Hàm này cập nhật giá trị cho một meta key nào đó, cấu trúc như sau:

update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_value = '')

Giá trị của $prev_value sẽ bổ trợ cho tham số $unique của hàm add_metadata(), nghĩa là nếu bạn truyền một giá trị vào $prev_value thì nó sẽ thêm một điều kiện là chỉ cập nhật cho những record nào có meta value bằng $prev_value.

2. Một số hàm bổ trợ Metadata API

Nếu các bạn để ý kỹ thì tất cả bốn hàm trên đều có một tham số truyền vào đó là $meta_type, điều này đôi khi gây phiền hà đối với lập trình viên vì bắt buộc phải nhớ tên của đối tượng cần cập nhật. Và để tường minh hơn thì đối với mỗi đối tượng như vậy thì WordPress sẽ cung cấp thêm bốn hàm riêng biệt.

Adding metadata Getting metadata Updating metadata Deleting metadata
Posts add_post_meta() get_post_meta() update_post_meta() delete_post_meta()
Users add_user_meta() get_user_meta() update_user_meta() delete_user_meta()
Comments add_comment_meta() get_comment_meta() update_comment_meta() delete_comment_meta()
Term add_term_meta() get_term_meta() update_term_meta() delete_term_meta()
Parameters $post_id,
$meta_key,
$meta_value,
$unique (optional)
$post_id,
$meta_key,
$single (optional),
$post_id,
$meta_key,
$meta_value,
$prev_value (optional)
$post_id,
$meta_key,
$meta_value (optional)

Thay vì sử dụng các hàm metadata và có truyền tham số $meta_type thì bạn sử dụng các hàm trên để bỏ qua tham số $meta_type.

Về danh sách các tham số truyền vào thì bạn sẽ suy ra từ hàm chính của nó. Ví dụ hàm get_metadata() sẽ có 4 tham số truyền vào, trong đó tham số đầu tiên là $meta_type và tham số này sẽ được loại bỏ nên lúc này các hàm add_post_meta(), add_user_meta(), add_comment_meta(), add_term_meta() chỉ còn ba tham số còn lại (bỏ đi tham số $meta_type).

Ví dụ:

// Hàm chính
add_metadata($meta_type, $object_id, $meta_key, $meta_value);

// Các hàm bổ trợ chỉ còn ba tham số $object_id, $meta_key, $meta_value
add_post_meta($post_id, $meta_key, $meta_value);
add_comment_meta($comment_id, $meta_key, $meta_value);
add_term_meta($term_id, $meta_key, $meta_value);
add_user_meta($user_id, $meta_key, $meta_value);

3. Lời kết

Bài này mình chỉ giới thiệu danh sách các hàm Metadata API trong WordPress, đây là các API khá quan trọng bởi vì khi lập trình WordPress bắt buộc các bạn phải biết để có thể tự mình design ra những database phù hợp cho các dự án. Bài này mình xin dừng tại đây, bài tiếp theo chúng ta sẽ vận dụng các API này kết hợp với meta boxes để thêm dữ liệu cho các bài viết trong WordPress.

Cùng chuyên mục:

Cập nhật nhanh 3 bí kíp thiết kế web đẹp mới nhất 2021

Cập nhật nhanh 3 bí kíp thiết kế web đẹp mới nhất 2021

Sở hữu website đẹp, hấp dẫn và chuyên nghiệp là điều mà ...

Dịch vụ cài đặt blog bằng WordPress miễn phí

Dịch vụ cài đặt blog bằng WordPress miễn phí

Website là một công cụ không thể thiếu khi bán hàng online, nó giúp ta…

Bài 06: Tạo trang quản lý Options trong WordPress

Bài 06: Tạo trang quản lý Options trong WordPress

Ở bài trước mình có nêu ra một ví dụ về quản lý thông tin…

Bài 05: Options API trong WordPress: add_option / get_option ...

Bài 05: Options API trong WordPress: add_option / get_option ...

Trong database của WordPress bạn sẽ thấy một table ten là [prefix]_options, table này sẽ…

Bài 04: Tìm hiểu Hooks , Action và Filter trong WordPress

Bài 04: Tìm hiểu Hooks , Action và Filter trong WordPress

Bạn đã từng nghe khái niệm lập trình hướng sự kiện trong các Framework như…

Bài 02: WordPress API là gì? Danh sách API trong WordPress

Bài 02: WordPress API là gì? Danh sách API trong WordPress

Đáng lẽ mình không viết bài này nhưng lúc đang viết bài tiếp theo thì…

Cách tùy biến theme WordPress căn bản cho người mới bắt đầu

Cách tùy biến theme WordPress căn bản cho người mới bắt đầu

Khi [cài đặt WordPress trên Hosting] xong thì bạn có thể cài đặt theme để…

Hướng dẫn làm website WordPress chạy tiếp thị liên kết với AT

Hướng dẫn làm website WordPress chạy tiếp thị liên kết với AT

Ngày nay, công nghệ ngày càng phát triển dẫn đến khái niệm [tiếp thị liên…

Tổng hợp mã CSS thường dùng để tùy biến theme WordPress

Tổng hợp mã CSS thường dùng để tùy biến theme WordPress

WordPress là một CMS dùng để làm website rất phổ biến, hay nói chính xác…

Đánh giá GeneratePress - Cách sử dụng theme GeneratePress

Đánh giá GeneratePress - Cách sử dụng theme GeneratePress

Nếu bạn đang muốn tìm kiếm một theme với các tiêu chí nhẹ, nhanh và…

Làm blog cá nhân bằng WordPress với theme GeneratePress

Làm blog cá nhân bằng WordPress với theme GeneratePress

Thời gian qua chắc hẳn bạn đã nghe đến theme GeneratePress rồi phải không nào?…

Cài đặt WordPress trên localhost

Cài đặt WordPress trên localhost

WordPress được lập trình bằng ngôn ngữ PHP và sử dụng MySQL để lưu trữ,…

Bài 01: WordPress là gì? Nên làm website bằng WordPress?

Bài 01: WordPress là gì? Nên làm website bằng WordPress?

WordPress là một CMS được phát triển trên ngôn ngữ lập trình PHP ...

Tặng license theme Generatepress khi mua Hosting Tinohost

Tặng license theme Generatepress khi mua Hosting Tinohost

Chào các bạn, hiện nay WordPress đang trở thành một phổ biến nhất thế giới,…

12 Wordpress plugin tốt nhất nên dùng cho website WordPress 2021

12 Wordpress plugin tốt nhất nên dùng cho website WordPress 2021

Bạn vừa tạo một blog WordPress mới và đang phân vân không biết nên chọn…

Bài 12: Custom Taxonomy  trong WordPress

Bài 12: Custom Taxonomy trong WordPress

Bài trước mình đã hướng dẫn bạn tạo một thể loại bài viết mới bằng…

Bài 11: Tạo Custom Post Type trong WordPress

Bài 11: Tạo Custom Post Type trong WordPress

Đây là các thể loại mặc định có sẵn sau khi bạn cài đặt WordPress.…

Bài 10: Hiển thị metadata ngoài frontend

Bài 10: Hiển thị metadata ngoài frontend

Sẵn có bạn hỏi làm thế nào để hiển thị nội dung bài viết ra…

Bài 09: Bốn bước custom Meta Boxes trong WordPress

Bài 09: Bốn bước custom Meta Boxes trong WordPress

Tới bài thứ chín này thì khái niệm Custom Meta Boxes không còn xa lạ…

Bài 07: Custom Meta Boxes trong WordPress

Bài 07: Custom Meta Boxes trong WordPress

WordPress là một CMS nên hệ thống dữ liệu của nó chỉ dừng lại ở…

Top