Cách tạo Custom Post Type (CPT) và Custom Taxonomy trong WordPress

Post Type mặc định trong WordPress như sau:

  • Attachment (Post Type: ‘attachment’ – Dạng đa phương tiện: hình ảnh, video, audio, tài liệu,…)
  • Post (Post Type: ‘post’ – Dạng bài viết)
  • Navigation menu (Post Type: ‘nav_menu_item’ – Dạnh menu)
  • Revision (Post Type: ‘revision’ – Dạng bản thảo: mỗi bài viết sau 1 lần chỉnh sửa sẽ sinh ra 1 bản thảo )
  • Page (Post Type: ‘page’- Dạng trang độc lập: có thể cấu hình các kiểu hiển thị khác nhau cho từng trang )

Custom Post Type là gì?

Custom Post Type (CPT) là các loại bài đăng mới mà bạn có thể tạo tương đương với dạng Post (bài viết) mặc định trong wodpress. Một loại bài đăng tùy chỉnh có thể được thêm vào WordPress thông qua hàm register_post_type ().

Khởi tạo Custom Post Type

Ở đây chúng tao khởi tại CPT gọi là “Deal”


// Creating a Deals Custom Post Type
function crunchify_deals_custom_post_type() {
	$labels = array(
		'name'                => __( 'Deals' ),
		'singular_name'       => __( 'Deal'),
		'menu_name'           => __( 'Deals'),
		'parent_item_colon'   => __( 'Parent Deal'),
		'all_items'           => __( 'All Deals'),
		'view_item'           => __( 'View Deal'),
		'add_new_item'        => __( 'Add New Deal'),
		'add_new'             => __( 'Add New'),
		'edit_item'           => __( 'Edit Deal'),
		'update_item'         => __( 'Update Deal'),
		'search_items'        => __( 'Search Deal'),
		'not_found'           => __( 'Not Found'),
		'not_found_in_trash'  => __( 'Not found in Trash')
	);
	$args = array(
		'label'               => __( 'deals'),
		'description'         => __( 'Best Crunchify Deals'),
		'labels'              => $labels,
		'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'revisions', 'custom-fields'),
		'public'              => true,
		'hierarchical'        => false,
		'show_ui'             => true,
		'show_in_menu'        => true,
		'show_in_nav_menus'   => true,
		'show_in_admin_bar'   => true,
		'has_archive'         => true,
		'can_export'          => true,
		'exclude_from_search' => false,
	        'yarpp_support'       => true,
		'taxonomies' 	      => array('post_tag'),
		'publicly_queryable'  => true,
		'capability_type'     => 'page'
);
	register_post_type( 'deals', $args );
}
add_action( 'init', 'crunchify_deals_custom_post_type', 0 );

Taxonomy mặc định trong WordPress như sau:

  • Category(Taxonomy: ‘category’ – Dạng chuyên mục của bài viết)
  • Post  Tag(Taxonomy: ‘post_tag’ – Dạng thẻ cho bài viết)

Custom Taxonomy là gì?

Custom Taxonomy là các loạị tương tự như chuyên mục (category), thẻ (tag) dùng để nhóm các bài viết.

Khởi tạo Custom Taxonomy

Chúng ta khởi tạo Custom Taxonomy gọi là “types” bằng hàm “register_taxonomy” và đồng thời khai báo luôn tag này dùng cho Post type “Deals” tài hàm này luôn.

// Let us create Taxonomy for Custom Post Type
add_action( 'init', 'crunchify_create_deals_custom_taxonomy', 0 );
 
//create a custom taxonomy name it "type" for your posts
function crunchify_create_deals_custom_taxonomy() {
 
  $labels = array(
    'name' => _x( 'Types', 'taxonomy general name' ),
    'singular_name' => _x( 'Type', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Types' ),
    'all_items' => __( 'All Types' ),
    'parent_item' => __( 'Parent Type' ),
    'parent_item_colon' => __( 'Parent Type:' ),
    'edit_item' => __( 'Edit Type' ), 
    'update_item' => __( 'Update Type' ),
    'add_new_item' => __( 'Add New Type' ),
    'new_item_name' => __( 'New Type Name' ),
    'menu_name' => __( 'Types' ),
  ); 	
 
  register_taxonomy('types',array('deals'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'type' ),
  ));
}

Quan hệ giữa Taxonomy và Post type

Quan hệ giữa Taxonomy và Post type là quan hệ nhiều – nhiều (nhiều – nhiều). 1 Taxonomy  có thể chứa nhiều Post type và 1 Post type có thể nằm trong nhiều Taxonomy .

Bản chất là Taxonomy  giống như 1 cái hộp và trong đó để nhiều Post type và 1 Post type có đặt trong hộp Taxonomy   hoặc hộp Taxonomy  khác

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x