Skip to content Skip to main navigation Skip to footer

Làm thế nào để tạo Custom Post Type WordPress

Làm thế nào để tạo Custom Post Type WordPress

Custom Post Type WordPress là gì?

Nói ngắn gọn thì custom post type WordPress sẽ cho phép bạn tạo bài viết theo nội dung khác với Page và Post để tiện phân loại. Trong WordPress, mặc định các post types là Post, Page, Attachment, vâng vâng.

Thông thường bạn phải viết tất cả bài viết trong mục Posts trong Admin Control Panel wordpress, rồi phân loại chúng bằng Category. Bài viết trong mọi loại sẽ hiển thị trong cùng một danh sách, vì vậy rất khó để phân biệt giữa chúng.

Custom post type có link riêng trong admin control panel, giúp tạo ra danh sách của các bài viết cùng một loại. Posts được tạo bằng cách này cũng có thể được gắn vào category phù hợp, vì vậy bạn có toàn quyền chỉnh sửa loại category nó đang được gắn và sắp xếp theo cách bạn thích. Hãy xem qua về việc chúng tôi tạo ra 2 Custom Post Type WordPress là Movies và Movie Reviews bên dưới:

Cách tạo Custom Post Type

Cách tạo Custom Post Type

Tạo code trong file function.php của theme. Tạo post type và danh mục bằng taxonomy
Khi tạo add code thành công vào admin của wordpress update link để nhận post type:Tạo code trong file function.php của theme. Tạo post type và danh mục bằng taxonomy
Khi tạo add code thành công vào admin của wordpress update link để nhận post type:

function tao_custom_post_type() {
		/**
		 * Post Type: Sự kiện du học.
		 */

		$labels = [
			"name" => __( "Sự kiện du học", "text-domain" ), //Tên post type dạng số nhiều
			"singular_name" => __( "Sự kiện du học", "text-domain" ), //Tên post type dạng số ít
			"menu_name" => __( "Sự kiện du học", "text-domain" ),
			"all_items" => __( "Tất cả", "text-domain" ),
			"add_new" => __( "Thêm mới", "text-domain" ),
			"add_new_item" => __( "Thêm mới", "text-domain" ),
			"featured_image" => __( "Ảnh đại diện", "text-domain" ),
		];

		$args = [
			"label" => __( "Sự kiện du học", "text-domain" ),
			"labels" => $labels,
			"description" => "Sự kiện du học",
			"public" => true, //Kích hoạt post type
			"publicly_queryable" => true, //Hiển thị các tham số trong query, phải đặt true
			"show_ui" => true, //Hiển thị khung quản trị như Post/Page
			"show_in_rest" => true,
			"rest_base" => "",
			"has_archive" => true, //Cho phép lưu trữ (month, date, year)
			"show_in_menu" => true, //Hiển thị trên Admin Menu (tay trái)
			"show_in_nav_menus" => true,
			"delete_with_user" => false,
			"exclude_from_search" => false, //Loại bỏ khỏi kết quả tìm kiếm
			"capability_type" => "post",
			"map_meta_cap" => true,
			"hierarchical" => false,
			"rewrite" => [ "slug" => "su-kien", "with_front" => true ], 
			// Đường dẫn https://domain.vn/su-kien/bai-viet
			"query_var" => true,
			"menu_icon" => "dashicons-cart", //Đường dẫn tới icon sẽ hiển thị
			"supports" => [ "title", "editor", "thumbnail", "excerpt" ],
		];

		register_post_type( "su_kien", $args ); 
		//Tạo post type với slug tên là sanpham và các tham số trong biến $args ở trên
	}

	add_action( 'init', 'tao_custom_post_type' );

	function tao_taxonomy() {

		/**
		 * Taxonomy: Danh mục Sụ kiện.
		 */

		$labels = [
			"name" => __( "Danh mục SK", "text-domain" ),
			"singular_name" => __( "Danh mục SK", "text-domain" ),
			"menu_name" => __( "Danh mục SK", "text-domain" ),
		];

		$args = [
			"label" => __( "Danh mục SK", "text-domain" ),
			"labels" => $labels,
			"public" => true,
			"publicly_queryable" => true,
			"hierarchical" => true,
			"show_ui" => true,
			"show_in_menu" => true,
			"show_in_nav_menus" => true,
			"query_var" => true,
			"rewrite" => [ 'slug' => 'danh_muc', 'with_front' => true, ],
			"show_admin_column" => true,
			"show_in_rest" => true,
			"rest_base" => "danh_muc",
			"rest_controller_class" => "WP_REST_Terms_Controller",
			"show_in_quick_edit" => false,
			];
		register_taxonomy( "danh_muc", [ "su_kien" ], $args );
	}
	add_action( 'init', 'tao_taxonomy' );

2. Tạo field cho post type

Tạo field với plugin Advanced Custom Fields

3. Tạo template cho post type

3.1 Trang danh mục

Tạo template riêng cho danh mục:
taxonomy-{tên-danh-mục}.php Tên danh mục tạo ở bước đầu. ở trên mình đã tạo là “danh_muc”
VD: taxonomy-danh_muc.php
Cách gọi field từ plugin:

echo get_field('time_event');

time_event là id field được tạo trong admin.

link demo: click vào xem

3.2. Tạo template riêng cho trang chi tiết

single-{post-type}.php Tên danh mục tạo ở bước đầu. ở trên mình đã tạo là “su_kien”

VD: single-su_kien.php

Cách gọi field từ plugin:

echo get_field('time_event');

time_event là id field được tạo trong admin.

link demo: click vào xem

4. Tạo shortcode cho post type

Tạo shortcode riêng cho post type

Cần add vào file function.php của theme và gọi nó ở nội dung của page

VD: [su_kien number=”3″]

link demo: click vào xem

number là số bài viết được hiển thị

Was This Article Helpful?

0
Related Articles
0 Comments

There are no comments yet

Leave a comment

Your email address will not be published. Required fields are marked *