Custom post type
Theo mặc định, SkillDo đi kèm với post (bài viết), bạn có thể tạo bao nhiêu loại nội dung tùy chỉnh tùy thích và các loại nội dung tùy chỉnh này được gọi là custom post type .
Một Custom Post Type sẽ hoàn toàn có đủ những chức năng giống hệt như 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.
Để tạo một Custom Post Type thì chúng ta sử dụng hàm register_post_type()
function register_post_type( $post_type, $args = array() )
#Parameters
$post_type Tên của custom post type
$args là một mảng gồm nhiều key và được giải thích ở phần dưới đây.
Parameter | Value | Description |
---|---|---|
labels | array |
name : tên của post type dạng số nhiều singular_name : tên của post type dạng số ít |
public | true | false | Kích hoạt sử dụng post type |
show_in_nav_menus | true | false | Nếu có giá trị TRUE thì sẽ hiển thị bên trang quản lý menu. admin/theme/menu |
show_in_nav_admin | true | false | Hiển thị trên thanh Admin bar bên trái. |
menu_position | int | hứ tự vị trí hiển thị trong menu (tay trái) |
menu_icon | string | icon hoặc hình ảnh đại diện cho post type |
supports | array |
Các metabox và trường dữ liệu hỗ trợ post type sử dụng. Metabox: info, media, seo, theme Field: title, excerpt, content, image, public, slug, seo_title, seo_keywords, seo_description, theme_layout, theme_view |
capibilitie | array |
Các quyền mà post type cung cấp cho người dùng
|
#Examplte
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 dự án', //Tên post type dạng số nhiều
'singular_name' => 'Dự án' //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
'supports' => array(
'group' => array( 'info', 'media', 'seo', 'theme' ),
'field' => array( 'title', 'excerpt', 'content', 'image', 'public', 'slug', 'seo_title', 'seo_keywords', 'seo_description', 'theme_layout', 'theme_view'),
), //Các trường dữ liệu hỗ trợ
'taxonomies' => array( 'category', 'post_tag' ), //Các taxonomy được phép sử dụng để phân loại nội dung
'public' => true, //Kích hoạt post type
'show_in_nav_menus' => true, //Nếu có giá trị TRUE thì nó sẽ hiển thị bên trang quản lý menu.
'show_in_nav_admin' => 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ị
'capibilitie' => array(
'view' => 'view_posts',
'add' => 'add_posts',
'edit' => 'edit_posts',
'delete' => 'delete_posts',
), //Key các quyền sử dụng post type này
);
register_post_type('project', $args); //Tạo post type với slug tên là sanpham và các tham số trong biến $args ở trên
}
/* Kích hoạt hàm tạo custom post type */
add_action('init', 'tao_custom_post_type');
Custom cate type
Taxonomy là tập hợp những thể loại giống như category. Mặc định khi bạn cài đặt SkillDo sẽ có taxonomies mặc định đó là Category.
Để tạo một taxonomy thì chúng ta sử dụng hàm register_taxonomy()
function register_cate_type( $cate_type, $post_type, $args )
#Parameters
$cate_type là tên của taxonomy cần tạo, chúng ta nên đặt chữ cái thường không dấu và tiếng Anh kế hợp với ký tự gạch dưới. Ví dụ category_project, brand
$post_type Tên của custom post type mà taxonomy thuộc về, trong hệ thống gồm có thể loại post
$args là một mảng gồm nhiều key và được giải thích ở phần dưới đây.
Parameter | Value | Description |
---|---|---|
labels | array |
name : tên của cate type dạng số nhiều singular_name : tên của cate type dạng số ít |
public | true | false | Kích hoạt sử dụng cate type |
show_in_nav_menus | true | false | Nếu có giá trị TRUE thì sẽ hiển thị bên trang quản lý menu. admin/theme/menu |
show_in_nav_admin | true | false | Hiển thị trên thanh Admin bar bên trái. |
menu_position | int | hứ tự vị trí hiển thị trong menu (tay trái) |
menu_icon | string | icon hoặc hình ảnh đại diện cho post type |
parent | true | false | Nếu true cate type sẽ có phân cấp danh mục. |
supports | array |
Các metabox và trường dữ liệu hỗ trợ post type sử dụng. Metabox: info, media, seo, theme Field: title, excerpt, content, image, public, slug, seo_title, seo_keywords, seo_description, theme_layout, theme_view |
capibilitie | array |
Các quyền mà post type cung cấp cho người dùng
|
#Examplte
function tao_taxonomy() {
/* Biến $label chứa các tham số thiết lập tên hiển thị của Taxonomy
*/
$labels = array(
'name' => 'Các loại dự án',
'singular' => 'Loại dự án',
);
/* Biến $args khai báo các tham số trong custom taxonomy cần tạo
*/
$args = array(
'labels' => $labels,
'public' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'parent' => true,
'capibilitie' => array(
'edit' => 'manage_categories',
'delete' => 'delete_categories',
),
);
/* Hàm register_cate_type để khởi tạo taxonomy
*/
register_cate_type('category_project', 'project', $args);
}
// Hook into the 'init' action
add_action( 'init', 'tao_taxonomy', 0 );