Taxonomy
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.
Taxonomy::addPost
Thêm một post type vào hệ thống
Tham số truyền vào bao gồm:
::addPost($post_type, $args)
Params | Type | Description | Default |
---|---|---|---|
$post_type | string | Loại post type của bạn (Ex: question, project, ebooks...) | |
$args | array | Mãng các tham số cấu hình |
Tham số $args bao gồm:
Params | Type | Description | Default |
---|---|---|---|
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 | boolean | true sử dụng, false không sử dụng | true |
show_in_nav_menus | boolean | true sẽ xuất hiện trong theme/menu để có thể thao tác sử dụng ngoài giao diện client | true |
show_in_nav_admin | boolean | true sẽ xuất hiện trong sidebar admin | true |
menu_position | int | Thứ tự sắp xếp với các menu khác ở sidebar admin | 0 |
menu_icon | string | Icon ở sidebar admin | null |
supports | array | Cấu hình hiển thị các metabox và field trong trang thêm (cập nhật) bài viết | |
capabilities | array | Các quyền mà post type cung cấp cho người dùng | Lấy của post |
Tham số supports bao gồm:
Group:: danh sách các Metabox sẽ hiển thị
- info: Group thông tin bao gồm các field (title, excerpt, content)
- media: Group media bao gồm các field (image)
- seo: Group seo bao gồm các field (slug, seo_title, seo_keywords, seo_description)
- theme: Group Template bao gồm các field (theme_layout, theme_view)
Field:: danh sách các Field sẽ hiển thị
- title: tiêu đề bài viết
- excerpt: mô tả ngắn
- content: nội dung chi tiết
- image: ảnh đại diện
- slug, seo_title, seo_keywords, seo_description : các trường thông tin seo
- theme_layout, theme_view : các trường cấu hình template
$label = [
'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
];
$supports = [
'group' => ['info', 'media', 'seo', 'theme'],
'field' => [
'title', 'excerpt', 'content', 'image', 'public', 'slug',
'seo_title', 'seo_keywords', 'seo_description', 'theme_layout', 'theme_view'
]
];
$args = [
'labels' => $label, //Gọi các label trong biến $label ở trên
'public' => true, //Kích hoạt post type
'show_in_nav_menus' => true, //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ị
'taxonomies' => array('category', 'post_tag'), //cate type được phép sử dụng
'supports' => $supports,
'capabilities' => [
'view' => 'view_posts',
'add' => 'add_posts',
'edit' => 'edit_posts',
'delete' => 'delete_posts',
]
];
Taxonomy::addPost('project', $args);
Taxonomy::getPost
Lấy thông tin của post type đã được đăng ký vào hệ thống
Tham số truyền vào bao gồm:
::getPost($post_type)
- Code PHP
- Result
Taxonomy::getPost('post');
/* Array
(
[labels] => Array
(
[name] => Bài viết
[singular_name] => Bài viết
[add_new_item] => Thêm bài viết
[edit_item] => Thêm bài viết
)
[public] => 1
[menu_position] => 3
[menu_icon] =>
[cate_type] => post_categories
[taxonomies] => Array
(
[0] => post_categories
)
[supports] => Array
(
[group] => Array
(
[0] => info
[1] => media
[2] => seo
[3] => theme
)
[field] => Array
(
[0] => title
[1] => excerpt
[2] => content
[3] => image
[4] => public
[5] => slug
[6] => seo_title
[7] => seo_keywords
[8] => seo_description
[9] => theme_layout
[10] => theme_view
)
)
[capabilities] => Array
(
[view] => view_posts
[add] => add_posts
[edit] => edit_posts
[delete] => delete_posts
)
[exclude_from_search] => 1
[show_in_nav_menus] => 0
[show_in_nav_admin] => 1
) */
Taxonomy::hasPost
Kiểm tra post type có được đăng ký chưa nếu có trả về true ngược lại là false
Taxonomy::hasPost($post_type)
Taxonomy::removePost
Gở bỏ post type khỏi hệ thống.
if(Taxonomy::hasPost($post_type)) {
Taxonomy::removePost($post_type)
}
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.
Taxonomy::addCategory
Thêm một cate type vào hệ thống
Tham số truyền vào bao gồm:
::addCategory($cate_type, $post_type, $args)
Params | Type | Description | Default |
---|---|---|---|
$cate_type | string | Loại cate type của bạn (Ex: question...) | |
$post_type | string | Loại post type của bạn (Ex: answer...) | |
$args | array | Mãng các tham số cấu hình |
Tham số $args bao gồm:
Params | Type | Description | Default |
---|---|---|---|
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 | boolean | true sử dụng, false không sử dụng | true |
show_in_nav_menus | boolean | true sẽ xuất hiện trong theme/menu để có thể thao tác sử dụng ngoài giao diện client | true |
show_in_nav_admin | boolean | true sẽ xuất hiện trong sidebar admin | true |
menu_position | int | Thứ tự sắp xếp với các menu khác ở sidebar admin | 0 |
menu_icon | string | Icon ở sidebar admin | null |
parent | boolean | Nếu true cate type sẽ có phân cấp danh mục | true |
supports | array | Cấu hình hiển thị các metabox và field trong trang thêm (cập nhật) bài viết | |
capabilities | array | Các quyền mà post type cung cấp cho người dùng | Lấy của post |
Tham số supports bao gồm:
Group:: danh sách các Metabox sẽ hiển thị
- info: Group thông tin bao gồm các field (title, excerpt, content)
- media: Group media bao gồm các field (image)
- seo: Group seo bao gồm các field (slug, seo_title, seo_keywords, seo_description)
- theme: Group Template bao gồm các field (theme_layout, theme_view)
Field:: danh sách các Field sẽ hiển thị
- name: tiêu đề bài viết
- excerpt: mô tả ngắn
- content: nội dung chi tiết
- image: ảnh đại diện
- slug, seo_title, seo_keywords, seo_description : các trường thông tin seo
- theme_layout, theme_view : các trường cấu hình template
$label = [
'name' => 'Các loại dự án',
'singular' => 'Loại dự án',
];
$supports = [
'group' => ['info', 'media', 'seo', 'theme'],
'field' => [
'title', 'excerpt', 'content', 'image', 'public', 'slug',
'seo_title', 'seo_keywords', 'seo_description', 'theme_layout', 'theme_view'
]
];
$args = [
'labels' => $label, //Gọi các label trong biến $label ở trên
'public' => true, //Kích hoạt post type
'show_in_nav_menus' => true, //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.
'parent' => true,
'supports' => $supports,
'capabilities' => [
'edit' => 'manage_categories',
'delete' => 'delete_categories',
]
];
Taxonomy::addCategory('category_project', 'project', $args);
Taxonomy::getCategory
Lấy thông tin của cate type đã được đăng ký vào hệ thống
Tham số truyền vào bao gồm:
::getCategory($cate_type)
- Code PHP
- Result
Taxonomy::getCategory('post_categories');
/* Array
(
[labels] => Array
(
[name] => Chuyên mục bài viết
[singular_name] => Chuyên mục
[add_new_item] => Thêm chuyên mục
)
[public] => 1
[menu_position] => 3
[menu_icon] =>
[parent] => 1
[show_admin_column] => 1
[post_type] => post
[supports] => Array
(
[group] => Array
(
[0] => info
[1] => media
[2] => seo
[3] => theme
[4] => category
)
[field] => Array
(
[0] => name
[1] => excerpt
[2] => content
[3] => image
[4] => public
[5] => slug
[6] => seo_title
[7] => seo_keywords
[8] => seo_description
[9] => theme_layout
[10] => theme_view
[11] => parent_id
)
)
[capabilities] => Array
(
[edit] => manage_categories
[delete] => delete_categories
)
[show_in_nav_menus] => 1
[exclude_from_search] => 1
[show_in_nav_admin] => 1
) */
Taxonomy::getCategoryByPost
Lấy danh sách cate type thuộc một post type
Taxonomy::getCategoryByPost('post')
Taxonomy::hasCategory
Kiểm tra cate type có được đăng ký chưa nếu có trả về true ngược lại là false
Taxonomy::hasCategory($cate_type)
Taxonomy::removeCategory
Gở bỏ cate type khỏi hệ thống.
if(Taxonomy::hasCategory($cate_type)) {
Taxonomy::removeCategory($cate_type)
}