Trong WordPress, post meta là các trường dữ liệu mở rộng được thêm vào bài viết. Các post meta giúp tạo thêm chức năng trang web, cải thiện trải nghiệm người dùng. Bạn có thể tạo số lượng meta tùy ý. Qua bài này, Daipho sẽ giới thiệu cách sử dụng post meta của WordPress nhé.
Siêu dữ liệu metadata trong WordPress
Như đã giới thiệu, post meta bổ sung thêm tính năng cho bài viết của bạn. Nó cũng được gọi là trường tùy chỉnh (custom field) hoặc siêu dữ liệu (metadata ) trong WordPress.
Ví dụ:
Nếu bạn thiết kế web bán sản phẩm kỹ thuật số. Và bạn muốn thêm một số thông tin bổ sung cho sản phẩm này, chẳng hạn như: chiết khấu, hạn bảo hành, thông số sản phẩm… Bạn chỉ cần lưu trữ dữ liệu trong meta rồi liên kết nó với sản phẩm đó.
Cấu trúc cơ bản của post meta trong WordPress bao gồm trường tên và trường giá trị.
Truy xuất
Hàm truy xuất post meta tương ứng với post_id
.
get_post_meta( int $post_id, string $key = '', bool $single = false ): mixed
Trong đó:
$key
là tên meta cần truy xuất. Theo mặc định, trả về dữ liệu cho tất cả các khóa. Mặc định: ''
.
$single
: Có trả về một giá trị hay không. Tham số này không có hiệu lực nếu $key
không được chỉ định. Mặc định: false
.
- Một mảng các giá trị nếu
$single
làfalse
. - Giá trị của trường meta nếu
$single
làtrue
. false
đối với$post_id
không hợp lệ (không phải số, 0 hoặc giá trị âm).
Một chuỗi rỗng nếu$post_id
hợp lệ nhưng bài viết không tồn tại.
Khi bạn không chỉ định $key
(''
) và đặt $single
là true
trong get_post_meta
, nó sẽ trả về tất cả các khóa.
$daiphometa = get_post_meta(get_the_ID(), '', true);
print_r($daiphometa );
//Array ( [key_1] => Array ( [0] => value_1 ), [key_2] => Array ( [0] => value_2 ) )
Truy xuất trường tùy chỉnh url hình thu nhỏ
Khi đang ở trong vòng lặp WordPress, bạn có thể sử dụng mã này để truy xuất trường tùy chỉnh. Trong ví dụ này, url hình ảnh thu nhỏ
nằm trong trường tùy chỉnh có tên “thumb
”.
<?php if ( get_post_meta( get_the_ID(), 'thumb', true ) ) : ?>
<a href="<?php the_permalink() ?>" rel="bookmark">
<img class="thumb" src="<?php echo esc_url( get_post_meta( get_the_ID(), 'thumb', true ) ); ?>" alt="<?php the_title_attribute(); ?>" />
</a>
<?php endif; ?>
Thêm trường meta
Thêm trường meta vào bài đăng đã cho.
add_post_meta( int $post_id, string $meta_key, mixed $meta_value, bool $unique = false ): int|false
Trả về: int|false
. Trả về giá trị số là meta ID nếu thành công, false
nếu thất bại.
Lưu ý rằng nếu khóa đã cho đã tồn tại trong loại post được chỉ định
- Nếu đối số
$unique
làfalse
thì một trường tùy chỉnh khác có cùng khóa sẽ được thêm. - Nếu đối số
$unique
làtrue
, thì không có thay đổi nào được thực hiện.
Nếu bạn muốn cập nhật giá trị của khóa hiện có, thay vào đó hãy sử dụng hàm update_post_meta()
.
Vì các giá trị meta được truyền qua hàm stripslashes()
nên bạn cần cẩn thận với nội dung được thoát bằng ký tự \
. Bạn có thể đọc thêm về hành vi và ví dụ giải pháp trong tài liệu update_post_meta()
.
Chi tiết về hàm
update_post_meta
, bạn hãy tham khảo: WordPress: hàm cập nhật trường meta.Tham khảo: