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

  • view
  • add
  • edit
  • delete

#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

  • edit
  • delete

#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 );