Trong WordPress, mọi thứ có thể xem là “post”, và 2 post điển hình là “post” (type=post) và “page” (type=page). Để thêm 1 post type mới vào WordPress (ví dụ như sản phẩm), các bước thực hiện như sau:
Bước 1: Đăng ký 1 post type mới
Thêm đoạn code sau vào functions.php (tạm thời để test – sau đó sẽ chuyển vào mu-plugins).
<?php
add_action('init', 'dangkyProductType');
funciton dangkyProductType(){
register_post_type('sanpham', [
'public' => true,
'show_in_rest' => true,
'labels' => [ 'name' => 'San Pham'],
'menu_icon' => 'dashicons-...',
]);
}
?>
**Lưu ý quan trọng: thường custom post type hiếm khi người ta để trong theme vì như vậy khi đổi theme sẽ không có post type này => lỗi. Để giải quyết đưa các đăng ký post type vào plugin và đặc biệt plugin này phải chạy luôn chứ không cần phải kích hoạt như plugin thông thường. Để thực hiện điều đó, tạo thư mục mu-plugins (cùng cấp với folder themes và plugins) và bỏ file (tên tùy ý vào đấy) – vd: add_custome_types.php
//doan ma tren bo sung them cac labels
'labels' => [
'name' => 'Sản phẩm',
'add_new_item' => 'Thêm mới',
'edit_item' => 'Sửa Sản phẩm',
'all_items' => 'Tất cả Sản phẩm',
'singular_name' => 'Sản phẩm'
]
Bước 2: Vào admin cập nhập đường dẫn tuyệt đối
Khi thêm custom post type, nhớ phải cập nhật lại đường dẫn tuyệt đối trong phần “Settings -> Permalinks”.
Kiểm tra xem các đường dẫn đã hoạt động hay chưa? (xuất bản và xem bài viết).
Bước 3: Hiển thị các post type mới này lên trang
Sử dụng vòng lặp “thần thánh” trong WordPress có bổ sung thêm tùy chỉnh nhỏ để hiển thị.
<?php
$dsSanpham = new WP_Query([ 'posts_per_page' => 3, 'post_type' => 'sanpham']);
while($dsSanpham->have_posts()){
$dsSanpham->the_post();
//luc nay su dung the_title(), the_permalink(), the_excerpt()... de hien thi cac noi dung
}
echo paginate_link(); //hien thi phan trang
?>


