Hướng dẫn Custom Post Type WordPress toàn tập

Cũng thuộc khuôn khổ bài quan trọng nên mình cũng xin viết lại về yếu tố này do hai bài cũ kia lúc bấy giờ hơi lỗi thời vì một số ít update trong WordPress 3.8.1. Ở bài này, mình sẽ hướng dẫn chi tiết cụ thể nhưng ngắn gọn về khái niệm Custom Post Type và cách thao tác với Custom Post Type trải qua code .

Custom Post Type là gì?

Hướng dẫn Custom Post Type

Mặc định trong WordPress sẽ cho bạn PagePost để xuất bản nội dung và hai cái này được gọi là post type. Nếu bạn có nhu cầu sử dụng nhiều hơn 2 post type, ví dụ làm thêm một post type khác với mục đích đăng sản phẩm thì bắt buộc chúng ta phải tự tạo một post type tương ứng, và cái post type mà do chúng ta tự tạo ra thì được gọi là Custom Post Type.

Một Custom Post Type sẽ hoàn toàn có đủ những “tố chất” giống hệt như hai post type mặc định, nghĩa là bạn có thể sử dụng category, tag, custom field, featured image,….và có thể gọi hiển thị ra ngoài trang chủ cùng lúc với Post.

Cách tạo Custom Post Type

Hãy nên nhớ rằng, lúc bấy giờ ít ai tạo custom post type bằng cách gõ từng dòng code như trong bài này mà sẽ sử dụng những công cụ mà mình sẽ đề cập ở cuối bài, do đó hoàn toàn có thể bạn không cần nhớ hết những tham số khi tạo. Nhưng những bạn quan tâm dùm mình là hãy đọc kỹ bài để hiểu quy trình tiến độ tạo một custom post type như thế nào để thuận tiện khi thao tác về sau .
Giống như thao tác với những code tạo widget hay tạo shortcode, để tạo một custom post type bạn hoàn toàn có thể viết vào file functions.php của theme hoặc tạo plugin .
Để tạo custom post type ta có cấu trúc code như sau :

function tao_custom_post_type ( ) {

/*
* Biến $args là những tham số quan trọng trong Post Type
*/
$args = array(
//Tham số cấu hình cho custom post type
);

register_post_type ( ‘ slug-post-type ’, $ args ) ; / / Cái slug-post-type rất quan trọng, bạn hoàn toàn có thể đặt tùy ý nhưng không có dấu cách, ký tự, … }

add_action( ‘init’, ‘tao_custom_post_type’ );

Không có gì là khó hiểu, đầu tiên là ta sẽ tạo một hàm riêng để tạo custom post type và cuối cùng này là kích hoạt cái hàm này vào action hook init là xong.

Trong hàm tao_custom_post_type() là một hàm register_post_type() để khởi tạo custom post type với các tham số mà ta sẽ khai báo trong biến $args. Thế là hết.

Đó là cấu trúc, quan trọng là ta sẽ khai báo những gì trong đó. Bạn hoàn toàn có thể xem qua những tham số tại register_post_type – WordPress Codex .

Các tham số trong code tạo Custom Post Type

Dưới đây là cách khai báo tham số quan trọng nhất, những tham số dạng optional mình sẽ bỏ lỡ .
Giả sử mình cần tạo một custom post type để đăng mẫu sản phẩm thì sẽ có code như sau .

function tao_custom_post_type()
{

/*
* Biến $label để chứa các text liên quan đến tên hiển thị của Post Type trong Admin
*/
$label = array(
‘name’ => ‘Các sản phẩm’, //Tên post type dạng số nhiều
‘singular_name’ => ‘Sản phẩm’ //Tên post type dạng số ít
);

/*
* Biến $args là những tham số quan trọng trong Post Type
*/
$args = array(
‘labels’ => $label, //Gọi các label trong biến $label ở trên
‘description’ => ‘Post type đăng sản phẩm’, //Mô tả của post type
‘supports’ => array(
‘title’,
‘editor’,
‘excerpt’,
‘author’,
‘thumbnail’,
‘comments’,
‘trackbacks’,
‘revisions’,
‘custom-fields’
), //Các tính năng được hỗ trợ trong post type
‘taxonomies’ => array( ‘category’, ‘post_tag’ ), //Các taxonomy được phép sử dụng để phân loại nội dung
‘hierarchical’ => false, //Cho phép phân cấp, nếu là false thì post type này giống như Post, true thì giống như Page
‘public’ => true, //Kích hoạt post type
‘show_ui’ => true, //Hiển thị khung quản trị như Post/Page
‘show_in_menu’ => true, //Hiển thị trên Admin Menu (tay trái)
‘show_in_nav_menus’ => true, //Hiển thị trong Appearance -> Menus
‘show_in_admin_bar’ => true, //Hiển thị trên thanh Admin bar màu đen.
‘menu_position’ => 5, //Thứ tự vị trí hiển thị trong menu (tay trái)
‘menu_icon’ => ”, //Đường dẫn tới icon sẽ hiển thị
‘can_export’ => true, //Có thể export nội dung bằng Tools -> Export
‘has_archive’ => true, //Cho phép lưu trữ (month, date, year)
‘exclude_from_search’ => false, //Loại bỏ khỏi kết quả tìm kiếm
‘publicly_queryable’ => true, //Hiển thị các tham số trong query, phải đặt true
‘capability_type’ => ‘post’ //
);

register_post_type ( ‘ sanpham ’, $ args ) ; / / Tạo post type với slug tên là sanpham và những tham số trong biến USD args ở trên

}
/* Kích hoạt hàm tạo custom post type */
add_action(‘init’, ‘tao_custom_post_type’);

Giải thích thì trong code mình đã giải thích khá chi tiết rồi nên ở đây mình không nói lại, mình chỉ cần bạn để ý giúp register_post_type( 'sanpham', $args ) vì đó là đoạn khởi tạo Custom Post Type với tên là sanpham.

Kết quả ta có…

demo-custom-post-type-2014Woooot!!! Thành công rồi ha, rê chuột vào bạn cũng thấy phần xem tất cả các post bên trong post type đó và nút Add new để thêm post mới giống như Page/Post. Vậy là coi như bạn đã tạo xong một Custom Post Type rồi á.

Hiển thị custom post type ra trang chủ

Mặc định nếu ngoài trang chủ bạn đang hiển thị list những post mới nhất thì nó chỉ lấy bài trong Post hiển thị chứ không lấy post của một custom post type ra, để cho nó hiển thị bạn chỉ cần chèn thêm dòng này vào functions.php


add_filter(‘pre_get_posts’,’lay_custom_post_type’);
function lay_custom_post_type($query) {
if (is_home() && $query->is_main_query ())
$query->set (‘post_type’, array (‘post’,’sanpham’));
return $query;
}

Bạn nhớ thay sanpham thành tên slug của custom post type bạn vừa tạo nhé. Đó là lý do vì sao mình kêu bạn nhớ cái slug này, còn nhiều việc để dùng nữa.

Tạo file hiển thị nội dung custom post type

Dựa vào cấu trúc của theme, thì mặc định custom post type sẽ hiển thị dựa theo code của file single.php trong theme. Nếu bạn muốn nó hiển thị khác, thì cứ tạo một file tên là single-{slug-post-type}.php. Như ví dụ này thì mình sẽ tạo file tên là single-sanpham.php để hiển thị nội dung trong post type riêng này.

Bạn hoàn toàn có thể copy hàng loạt code bên file single.php qua file mới tạo này và sửa lại cho nhanh .

Sử dụng trong Loop

Để hiển thị list những bài trong một custom post type ra ngoài bằng Loop và Query thì chỉ cần khai báo thêm một tham số post_type vào là được. Ví dụ :

USD new_query = new WP_Query ( ‘ post_type = sanpham ’ ) ;

Quá thuận tiện .

Công cụ tạo Custom Post Type nhanh

Như mình đã nói ở đầu bài, giờ đây ít ai tạo Custom Post Type mà viết từng dòng code mà thay vào đó là sử dụng những công cụ tạo cho nhanh do tại trong thực tiễn bước tạo nó cũng chỉ có nhiêu đó chứ không khác hơn. Dưới đây là những công cụ mà bạn nên xem qua :

  • Custom Post Type Generator – Cho phép bạn tạo custom post type nhanh chóng bằng việc chọn một số tùy chọn có sẵn và lấy toàn bộ code về. Bạn chỉ cần copy đoạn code này vào file functions.php hoặc làm plugin riêng là xong.
  • Custom Post Type UI – Plugin miễn phí cho phép tạo custom post type nhanh chóng trực tiếp trong WP-Admin.

Vậy thôi, còn những công cụ khác nó nhiều tính năng quá nên mình không đề cập tới vì rất hại não .

Kết bài

Trong bài này mình chỉ đề cập đến đây thôi vì mình nghĩ nhiêu đó đã quá đủ để cho bạn hiểu Custom Post Type là gì và cách tạo nó. Dĩ nhiên còn rất là nhiều tips / tricks để tất cả chúng ta sử dụng với công dụng này nhưng nếu có mình sẽ viết bài riêng .
Hơn nữa, khi thao tác với Custom Post Type hoàn toàn có thể bạn sẽ phải khám phá thêm một khái niệm khác nữa, đó là Custom Taxonomies mà mình sẽ đề cập ở bài tiếp theo và sau khi có bài đó rồi mình sẽ đề cập tới một số ít thủ pháp tương quan đến Custom Post Type, từ đó bạn sẽ thuận tiện hiểu mà không phải quá nặng đầu óc .

5/5 – ( 3 bầu chọn )