METABOX

Khi bạn đăng nhập vào admin và bạn edit một bài viết nào đó thì các khối trong giao diện ta gọi là các Meta Boxes. Vậy Meta Boxes là các khối hiển thị dữ liệu cho phép người dùng chỉnh sửa và lưu lại trong trang quản lý bài viết của WordPress.

#Add metabox

Hàm add_meta_box() dùng để thêm một Meta Box vào trong giao diện admin của Skilldo, hàm này có cú pháp như sau:

function add_meta_box ( $id, $title, $callback, $module = null, $position = 1, $content = 'leftb', $content_box = '')

#Parameters

Parameter Value Description
$id string Là ID của meta box, ID này phải là duy nhất không trùng với các Meta Boxes khác.
$title string Tiêu đề của Meta Box.
$callback string Hàm callback dùng để hiển thị mã HTML nằm bên trong Meta Box
$module string Đối tượng mà Meta Box sẽ hiển thị, có thể là Page, Post, Category hoặc là một custom post type
$position int Thứ tự ưu tiên hiển thị giữa các Meta box.
$content string Vị trí mà Meta Box sẽ hiển thị bên trên giao diện. Chúng ta có ba vị trí đó là leftt, leftbright.
$content_box array Một mảng các tham số truyền vào Meta Box

#Source

src/
├── ...
└── application/
    └── helpers/
        └── metabox_helper.php

#Example

Vị trí leftt

add_meta_box ('Example_metabox_id', 'Example Meta Boxs', 'example_callback_function', 'post', 1, 'leftt');
function example_callback_function() {
	echo '<h5 class="text-center">vị Trí <b>LEFTT</b></h5>';
	echo '<br/>';
}

Kết quả

Vị trí leftb

add_meta_box ('Example_metabox_id', 'Example Meta Boxs', 'example_callback_function', 'post', 1, 'leftb');
function example_callback_function() {
	echo '<h5 class="text-center">vị Trí <b>LEFTB</b></h5>';
	echo '<br/>';
}

Kết quả

Vị trí right

add_meta_box ('Example_metabox_id', 'Example Meta Boxs', 'example_callback_function', 'post', 1, 'right');
function example_callback_function() {
	echo '<h5 class="text-center">vị Trí <b>RIGHT</b></h5>';
	echo '<br/>';
}

Kết quả

METADATA

Metadata cho phép bạn đưa các thông tin bổ sung vào một tài nguyên của website.

Metadata có thể được thêm vào:

#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:

function add_metadata($object_type, $object_id, $meta_key, $meta_value)

#Parameters

Parameter Value Description
$object_type string Tên đối tượng metadata. Ví dụ post, page, comment, term
$object_id int Khóa ngoại tham chiếu đến table chính. (ID post, page ...)
$meta_key string Key của Meta data
$meta_value string Giá trị của Meta data

#Source

src/
├── ...
└── application/
    └── helpers/
        └── metabox_helper.php

#Get metadata

Hàm này dùng để lấy một metadata trong cơ sở dữ liệu

function get_metadata($object_type, $object_id = '', $meta_key = '', $single = false)

#Parameters

Parameter Value Description
$object_type string Tên đối tượng metadata. Ví dụ post, page, comment, term
$object_id int Khóa ngoại tham chiếu đến table chính. (ID post, page ...)
$meta_key string Key của Meta data
$single true|false (default false) 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 đó.

#Source

src/
├── ...
└── application/
    └── helpers/
        └── metabox_helper.php

#Update metadata

Hàm này cập nhật giá trị cho một meta key nào đó, nếu meta_key không tồn tại sẽ tạo mới metadata

function update_metadata($object_type, $object_id, $meta_key, $meta_value)

#Parameters

Parameter Value Description
$object_type string Tên đối tượng metadata. Ví dụ post, page, comment, term
$object_id int Khóa ngoại tham chiếu đến table chính. (ID post, page ...)
$meta_key string Key của Meta data
$meta_value string Giá trị của Meta data

#Source

src/
├── ...
└── application/
    └── helpers/
        └── metabox_helper.php

#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:

function delete_metadata($object_type, $object_id, $meta_key, $meta_value, $delete_all = false)

#Parameters

$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.

#Source

src/
├── ...
└── application/
    └── helpers/
        └── metabox_helper.php

#Metadata object

Khi bạn thêm metadata bằng add_metadata hoặc update_metadat, khi xóa đối tượng (page, post ..) thì dữ liệu metadat sẽ không được tự động xóa kèm mà bạn phải viết lệnh hoặc xóa thủ công cho metadata đã thêm.

Để tự động hóa quá trình xóa metadata bạn có thể sử dụng các hàm metadata riêng biệt cho từng đối tượng

Adding metadata Getting metadata Updating metadata Deleting metadata
Category add_category_meta get_category_meta update_category_meta delete_category_meta
Posts add_post_meta get_post_meta update_post_meta delete_post_meta
Gallery add_gallery_meta get_gallery_meta update_gallery_meta delete_gallery_meta
Users add_user_meta get_user_meta update_user_meta delete_user_meta
Page chưa hỗ trợ chưa hỗ trợ chưa hỗ trợ chưa hỗ trợ

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.