07/09/2018, 10:47

Quản Lý Dữ Liệu trong Wordpress Sử Dụng Các Hàm Meta Data

Wordpress phiên bản 4.4 giới thiệu chức năng term meta data trong đó cho phép các developer có thể xử lý dữ liệu tùy ý có thể phát sinh trong quá trình phát triển website. Các dữ liệu này được còn gọi là meta data để phân biệt với các dữ liệu khác được lưu trên database như data về post, user, ...

Wordpress phiên bản 4.4 giới thiệu chức năng term meta data trong đó cho phép các developer có thể xử lý dữ liệu tùy ý có thể phát sinh trong quá trình phát triển website. Các dữ liệu này được còn gọi là meta data để phân biệt với các dữ liệu khác được lưu trên database như data về post, user, category.... Chức năng này tương tự như chức năng quản lý meta data của post với sự khác biệt nằm ở chỗ dữ liệu sử dụng cá hàm meta data không nhất thiết phải có mối liên hệ nào tới post.

Các Hàm Meta Data trong Wordpress

Wordpress cung cấp 4 hàm meta data đó là:

  • add_term_meta(): Dùng để lưu dữ liệu meta data
  • update_term_meta(): Dùng để cập nhật meta data
  • delete_term_meta: Dùng để xóa meta data
  • get_term_meta(): Dùng để lấy dữ liệu meta data đã được lưu

Chúng ta sẽ tìm hiểu các sử dụng ở ngay phần tiếp theo đây với các đoạn code ví dụ minh họa cụ thể đi kèm sẽ giúp bạn có thể hiểu được các hàm này hoạt động như thế nào.

Quản Lý Dữ Liệu Với Các Hàm Meta Data

Để làm theo các ví dụ dưới đây bạn nên tạo một site wordpress mới để test, điều này sẽ tránh việc tạo ra các dữ liệu meta data thừa trên website. Sau khi dựng xong một site Wordpress mới bạn đi đến thư mục chứa theme đang sử dụng và mở file functions.php sử dụng một editor hoặc IDE tùy ý có trên máy tính của bạn. Tiếp theo bạn xóa toàn bộ nội dung trong file này và thêm đoạn code sau:

<?php
// lưu meta data với term ID là 123 và tên khóa meta key là "my_test_term_key" và dữ liệu là một chuỗi "Sample data"
add_term_meta( 123, "my_test_term_key" , "Sample data" );

// hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
print_r(get_term_meta(123, "my_test_term_key"));

Sau đó bạn mở trình duyệt và truy cập vào địa chỉ URL để chạy website để kiểm tra. Bạn sẽ thấy nội dung như sau:

Array (
    [0] => Sample data
)

Mỗi một meta data thêm vào sẽ được xác định bởi term IDmeta key. Ở đoạn code trên khi gọi hàm add_term_meta() thì yêu cầu chúng ta phải nhập vào tối thiểu 3 đối số:

  • term_id: Term ID là một số nguyên dương tùy ý được dùng để xác định ID của dữ liệu meta data sẽ được thêm vào. Vỗi một term ID có thể đi cặp với một hoặc nhiều meta_key.
  • meta_key: Term Key là một chuỗi các ký tự dùng để xác định tên của meta data.
  • meta_value: Dữ liệu thực tế lưu vào meta data. Dữ liệu này có thể là chuỗi, số, mảng hoặc thậm chí là object...

Tiếp theo khi gọi hàm get_term_meta() để lấy dữ liệu bạn cần truyền vào hai đối số là term IDterm meta. Hàm này trả về giá trị là một mảng chứa các giá trị meta value đã được lưu vào term ID và meta key.

Lưu ý: Nếu bạn chạy website từ lần thứ hai trở đi các giá trị meta value mới sẽ được thêm vào meta data với term ID là 123 và khóa meta key là "my_test_term_key" do đó mảng trả về sẽ có thể có nhiều hơn một phần tử.

Để tránh việc hàm add_term_meta thêm vào dữ liệu lặp lại bạn có thể truyền vào đối số thứ tư cho hàm này là true (để không cho phép thêm vào giá trị lặp) hoặc false (để cho phép lặp lại. Giá trị mặc định là false nếu bạn không truyền đối số thứ tư này. Ví dụ:

<?php
add_term_meta( 123, "my_test_term_key" , "Sample data 1", true )

Để cập nhật meta data bạn sử dụng hàm update_meta_data(). Cập nhật đoạn code ở trên về nội dung như sau;

<?php
// lưu meta data với term ID là 123 và tên khóa meta key là "my_test_term_key" và dữ liệu là một chuỗi "Sample data"
add_term_meta( 123, "my_test_term_key" , "Sample data" );

update_term_meta(123, "my_test_term_key", "New sample data");

// hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
print_r(get_term_meta(123, "my_test_term_key"));

Bây giờ khi chạy website trên trình duyệt bạn sẽ thấy kết quả như sau:

Array
(
    [0] => New sample data
    [1] => New sample data
    [2] => New sample data
)

Ở trên bạn có thể thấy hàm update_term_meta() cập nhật toàn bộ giá trị meta value được lưu sử dụng term ID là 123 và khóa term meta key là my_test_term_key về giá trị New sample data. Trong trường hợp các meta value bạn lưu vào là không trùng lặp (trường hợp này bạn sẽ truyền vào đối số thứ tư cho hàm add_term_meta() là true) thì khi update bạn sẽ cần truyền vào chính xác giá trị meta value bạn muốn cập nhật. Ví dụ:

<?php
// lưu meta data với term ID là 123 và tên khóa meta key là "my_test_term_key" và dữ liệu là một chuỗi "Sample data"
add_term_meta( 123, "my_test_term_key_new" , "First sample data" );
add_term_meta( 123, "my_test_term_key_new" , "Second sample data" );

update_term_meta(123, "my_test_term_key_new", "First sample data", "New sample data");

// hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
print_r(get_term_meta(123, "my_test_term_key_new"));

Bây giờ khi chạy website trên trình duyệt bạn sẽ thấy kết quả như sau:

Array
(
    [0] => New sample data
    [1] => Second sample data
)

Để xóa meta value với term ID và term key cho trước bạn sử dụng hàm delete_term_meta():

    // lưu meta data với term ID là 123 và tên khóa meta key là "my_test_term_key" và dữ liệu là một chuỗi "Sample data"
    add_term_meta( 123, "my_test_term_key_new" , "First sample data" );
    add_term_meta( 123, "my_test_term_key_new" , "Second sample data" );

    // hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
    print_r(get_term_meta(123, "my_test_term_key_new"));

    delete_term_meta(123, "my_test_term_key_new");

    // hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
    print_r(get_term_meta(123, "my_test_term_key_new"));

Bây giờ khi chạy website trên trình duyệt bạn sẽ thấy kết quả như sau:

Array
(
    [0] => First sample data
    [1] => Second sample data
)
Array
(
)

Để kiểm tra meta value với một giá trị cho trước trước khi xóa bạn sẽ cần truyền vào hàm delete_term_meta đối số thứ 3 chính là giá trị cần so sánh:

    // lưu meta data với term ID là 123 và tên khóa meta key là "my_test_term_key" và dữ liệu là một chuỗi "Sample data"
    add_term_meta( 123, "my_test_term_key_new" , "First sample data" );
    add_term_meta( 123, "my_test_term_key_new" , "Second sample data" );

    // hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
    print_r(get_term_meta(123, "my_test_term_key_new"));

    delete_term_meta(123, "my_test_term_key_new", "Second sample data");

    // hiển thị dữ liệu meta data được lưu trong term ID là 123 và tên khóa là "my_test_term_key"
    print_r(get_term_meta(123, "my_test_term_key_new"));

Bây giờ khi chạy website trên trình duyệt bạn sẽ thấy kết quả như sau:

Array
(
    [0] => First sample data
    [1] => Second sample data
)
Array
(
    [0] => First sample data
)

Như vậy ở trên chỉ một meta value trong term ID 123 và meta key my_test_term_key_new có giá trị là Second sample data bị xóa. Meta value đầu tiên có giá trị khác đã không bị xóa. Tới chúng ta đã cùng nhau tìm hiểu về cách quản lý custom data trong Wordpress sử dụng các hàm meta function trong lần tiếp theo nếu cần lưu trữ dữ liệu tùy ý không liên quan tới bài viết bạn hãy nhớ vẫn dụng các kiến thức đã học trong bài này. Happy coding!!!

0