Tạo custom taxonomies trong WordPress

5 tháng ago, Hướng dẫn WordPress, 1 Views
Tạo custom taxonomies trong WordPress

Tạo Custom Taxonomies Trong WordPress: Hướng Dẫn Chi Tiết

WordPress là một nền tảng quản lý nội dung (CMS) mạnh mẽ và linh hoạt, cho phép người dùng tạo ra nhiều loại trang web khác nhau, từ blog cá nhân đến các trang web doanh nghiệp phức tạp. Một trong những tính năng quan trọng giúp WordPress linh hoạt như vậy là khả năng tạo ra các custom taxonomies (phân loại tùy chỉnh). Trong bài viết này, chúng ta sẽ đi sâu vào cách tạo và sử dụng custom taxonomies trong WordPress.

Taxonomies Là Gì?

Taxonomies, hay phân loại, là các cách để nhóm và phân loại nội dung trên trang web của bạn. WordPress cung cấp hai loại taxonomies mặc định:

  • Categories (chuyên mục): Phân loại bài viết theo chủ đề rộng.
  • Tags (thẻ): Gắn nhãn cho bài viết bằng các từ khóa cụ thể.

Ví dụ, một bài viết về “Hướng dẫn tạo theme WordPress” có thể được đặt trong chuyên mục “WordPress” và được gắn các thẻ như “theme”, “custom theme”, “WordPress development”.

Tại Sao Cần Custom Taxonomies?

Các taxonomies mặc định thường không đủ cho các trang web phức tạp hơn. Ví dụ:

  • Một trang web về sách có thể cần một taxonomy để phân loại sách theo “Thể loại” (như tiểu thuyết, trinh thám, khoa học viễn tưởng) và một taxonomy khác để phân loại sách theo “Tác giả”.
  • Một trang web bất động sản có thể cần taxonomies để phân loại bất động sản theo “Loại hình” (nhà, căn hộ, biệt thự) và “Vị trí”.

Custom taxonomies cho phép bạn tạo các hệ thống phân loại nội dung phù hợp với nhu cầu cụ thể của trang web của bạn, giúp người dùng dễ dàng tìm kiếm và duyệt nội dung.

Cách Tạo Custom Taxonomies Trong WordPress

Có hai cách chính để tạo custom taxonomies trong WordPress:

  1. Sử dụng plugin
  2. Sử dụng code (chỉnh sửa file functions.php của theme)

Chúng ta sẽ xem xét cả hai cách này.

Sử Dụng Plugin

Đây là cách đơn giản và dễ dàng nhất, đặc biệt đối với người mới bắt đầu. Có rất nhiều plugin miễn phí và trả phí cho phép bạn tạo custom taxonomies một cách trực quan. Một số plugin phổ biến bao gồm:

  • Custom Post Type UI
  • Pods
  • Toolbox

Trong ví dụ này, chúng ta sẽ sử dụng Custom Post Type UI.

  1. Cài đặt và kích hoạt plugin Custom Post Type UI.
  2. Trong menu WordPress, bạn sẽ thấy một mục mới có tên “CPT UI”. Nhấp vào “Add/Edit Taxonomies”.
  3. Điền vào các trường cần thiết:

Taxonomy Slug: Đây là định danh duy nhất cho taxonomy của bạn (ví dụ: book_genre). Lưu ý rằng slug phải là chữ thường và không có khoảng trắng.
Plural Label: Tên nhiều của taxonomy (ví dụ: “Thể loại sách”).
Singular Label: Tên số ít của taxonomy (ví dụ: “Thể loại sách”).
Attach to Post Types: Chọn loại bài viết mà taxonomy này sẽ áp dụng (ví dụ: “Bài viết”).

  1. Nhấp vào “Add Taxonomy”.

Sau khi taxonomy được tạo, bạn sẽ thấy một mục mới trong menu chỉnh sửa bài viết hoặc trong menu của loại bài viết tùy chỉnh mà bạn đã chọn. Bạn có thể thêm các terms (thuật ngữ) vào taxonomy này tương tự như cách bạn thêm categories hoặc tags.

Sử Dụng Code (functions.php)

Đây là cách linh hoạt hơn, nhưng đòi hỏi kiến thức về PHP. Bạn cần chỉnh sửa file functions.php của theme (hoặc tạo một plugin tùy chỉnh). Lưu ý quan trọng: Luôn sao lưu file functions.php trước khi chỉnh sửa để tránh mất dữ liệu nếu có lỗi xảy ra.

Ví dụ, chúng ta sẽ tạo một taxonomy có tên “Nhà sản xuất” cho loại bài viết “Sản phẩm”.

Mở file functions.php của theme và thêm đoạn code sau:


function create_manufacturer_taxonomy() {

	$labels = array(
		'name'                       => _x( 'Nhà sản xuất', 'Taxonomy General Name', 'text_domain' ),
		'singular_name'              => _x( 'Nhà sản xuất', 'Taxonomy Singular Name', 'text_domain' ),
		'menu_name'                  => __( 'Nhà sản xuất', 'text_domain' ),
		'all_items'                  => __( 'Tất cả nhà sản xuất', 'text_domain' ),
		'parent_item'                => __( 'Nhà sản xuất cha', 'text_domain' ),
		'parent_item_colon'          => __( 'Nhà sản xuất cha:', 'text_domain' ),
		'new_item_name'              => __( 'Tên nhà sản xuất mới', 'text_domain' ),
		'add_new_item'               => __( 'Thêm nhà sản xuất mới', 'text_domain' ),
		'edit_item'                  => __( 'Sửa nhà sản xuất', 'text_domain' ),
		'update_item'                => __( 'Cập nhật nhà sản xuất', 'text_domain' ),
		'view_item'                  => __( 'Xem nhà sản xuất', 'text_domain' ),
		'separate_items_with_commas' => __( 'Phân tách nhà sản xuất bằng dấu phẩy', 'text_domain' ),
		'add_or_remove_items'        => __( 'Thêm hoặc xóa nhà sản xuất', 'text_domain' ),
		'choose_from_most_used'      => __( 'Chọn từ các nhà sản xuất được sử dụng nhiều nhất', 'text_domain' ),
		'popular_items'              => __( 'Nhà sản xuất phổ biến', 'text_domain' ),
		'search_items'               => __( 'Tìm kiếm nhà sản xuất', 'text_domain' ),
		'not_found'                  => __( 'Không tìm thấy nhà sản xuất nào', 'text_domain' ),
		'no_terms'                   => __( 'Không có nhà sản xuất nào', 'text_domain' ),
		'items_list'                 => __( 'Danh sách nhà sản xuất', 'text_domain' ),
		'items_list_navigation'      => __( 'Điều hướng danh sách nhà sản xuất', 'text_domain' ),
	);
	$args = array(
		'labels'                     => $labels,
		'hierarchical'               => true,
		'public'                     => true,
		'show_ui'                    => true,
		'show_admin_column'          => true,
		'show_in_nav_menus'          => true,
		'show_tagcloud'              => true,
		'rewrite'                    => array( 'slug' => 'manufacturer' ),
	);
	register_taxonomy( 'manufacturer', array( 'product' ), $args );

}
add_action( 'init', 'create_manufacturer_taxonomy', 0 );

Giải thích code:

  • create_manufacturer_taxonomy(): Tên hàm tạo taxonomy.
  • $labels: Mảng chứa các nhãn hiển thị cho taxonomy trong giao diện quản trị.
  • $args: Mảng chứa các tham số cấu hình taxonomy.
  • hierarchical: Xác định taxonomy có phải là hierarchical (như categories, có thể có categories cha và con) hay không. Nếu đặt là true, taxonomy sẽ hoạt động như categories. Nếu đặt là false, taxonomy sẽ hoạt động như tags.
  • public: Xác định taxonomy có hiển thị công khai trên trang web hay không.
  • show_ui: Xác định taxonomy có hiển thị trong giao diện quản trị hay không.
  • show_admin_column: Xác định taxonomy có hiển thị trong cột quản trị bài viết hay không.
  • rewrite: Mảng chứa các tham số rewrite URL. slug xác định phần slug URL cho taxonomy.
  • register_taxonomy( 'manufacturer', array( 'product' ), $args ): Hàm đăng ký taxonomy.
    • Tham số đầu tiên là tên taxonomy (slug).
    • Tham số thứ hai là một mảng chứa các loại bài viết mà taxonomy này sẽ áp dụng. Trong trường hợp này, nó chỉ áp dụng cho loại bài viết ‘product’.
    • Tham số thứ ba là mảng các tham số cấu hình.
  • add_action( 'init', 'create_manufacturer_taxonomy', 0 ): Hàm gọi hàm create_manufacturer_taxonomy() khi WordPress khởi tạo.

Quan trọng: Thay thế text_domain bằng text domain của theme bạn đang sử dụng. Nếu bạn không biết text domain của theme, bạn có thể tìm thấy nó trong file style.css của theme.

Sau khi thêm code này vào file functions.php, hãy truy cập vào trang quản trị WordPress của bạn. Bạn sẽ thấy một mục mới có tên “Nhà sản xuất” trong menu của loại bài viết “Sản phẩm”.

Hiển Thị Custom Taxonomy Trên Trang Web

Sau khi tạo custom taxonomy, bạn cần hiển thị nó trên trang web để người dùng có thể duyệt nội dung theo taxonomy đó. Có nhiều cách để hiển thị custom taxonomy, tùy thuộc vào giao diện của bạn:

  • Sử dụng template tags: WordPress cung cấp các template tags như the_terms(), get_terms()wp_list_categories() để hiển thị các terms của taxonomy.
  • Tạo template tùy chỉnh: Bạn có thể tạo một template tùy chỉnh để hiển thị nội dung theo taxonomy. Ví dụ, bạn có thể tạo một template có tên taxonomy-manufacturer.php để hiển thị tất cả các sản phẩm thuộc một nhà sản xuất cụ thể.
  • Sử dụng plugin: Một số plugin hiển thị nội dung (ví dụ: plugin thư viện hình ảnh) có hỗ trợ custom taxonomies và cho phép bạn lọc và hiển thị nội dung dựa trên taxonomy.

Ví dụ, để hiển thị danh sách các nhà sản xuất của một sản phẩm trong single post template (single.php hoặc single-product.php), bạn có thể sử dụng code sau:


<p>Nhà sản xuất: <?php the_terms( get_the_ID(), 'manufacturer', '', ', ', '' ); ?></p>

Code này sẽ hiển thị danh sách các nhà sản xuất được liên kết với sản phẩm hiện tại, phân tách bởi dấu phẩy.

Kết Luận

Custom taxonomies là một công cụ mạnh mẽ trong WordPress, cho phép bạn tổ chức và phân loại nội dung của mình một cách hiệu quả. Bằng cách sử dụng custom taxonomies, bạn có thể cải thiện trải nghiệm người dùng, giúp họ dễ dàng tìm kiếm và duyệt nội dung mà họ quan tâm. Cho dù bạn chọn sử dụng plugin hay code, việc hiểu cách tạo và sử dụng custom taxonomies là một kỹ năng quan trọng đối với bất kỳ người dùng WordPress nào.