LẬP TRÌNH PLUGIN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 12: Custom Taxonomy trong WordPress

Trong bài này mình sẽ hướng dẫn cách custom taxonomy trong WordPress, mình cũng giới thiệu khái niệm taxonomy là gì và tạo sao nên custoe nó.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Bài trước mình đã hướng dẫn bạn tạo một thể loại bài viết mới bằng các sử dụng hàm register_post_type, tuy nhiên bấy nhiêu đó là chưa đủ để bạn có thể xây dựng những ứng dụng thực tế được.

Ví dụ bạn xây dựng một website bán hàng và bạn cần lưu trữ thông tin brand (thương hiêu sản phẩm), điều này trong WordPress không hỗ trợ mà nó chỉ hỗ trợ categories với tags thôi. Nhưng đừng lo nhé, WordPress có hỗ trợ bạn một số API giúp tạo ra những đối tượng tương tự như category đó là Taxonomies. Vậy taxonomy là gì thì chúng ta cùng tìm hiểu.

1. Taxonomies là gì?

Taxonomy là tập hợp những thể loại giống như category. Mặc định khi bạn cài đặt WordPress sẽ có bốn taxonomies đó là Category, Tag, Link Category và Post Format.

Bài viết này được đăng tại [free tuts .net]

Vậy Custom Taxonomies là cách sử dụng những Taxonomies API mà WordPress cung cấp sẵn để tạo ra những Taxonomy mới. Ví dụ bạn xây dựng một website bán hàng thì bạn sẽ tạo thêm một số Taxonomies như Brand, Company, ...

Tất cả những taxonomies sẽ được lưu trong bảng term_taxonomy, không tin bạn hãy mở bảng này lên thì sẽ thấy một record như sau:

custom taxonomy wordpress png

Mô hình cơ sở dữ liệu của Taxonomy và Post sẽ có 5 bảng đó là:

custom taxonomy wordpress 1 png

Trong đó:

  • wp_terms: Bảng lưu các record của taxonomies, ví dụ bạn tạo ra chuyên mục tin trong nước, thương hiệu Sony thì bảng này sẽ chứa hai item này.
  • wp_term_taxonomy: Bảng lưu thể loại của taxonomies và các thông tin như thông tin về taxonomy đa cấp. Nó có một khóa ngoại trỏ đến bảng term bởi vì nó là bảng cấu hình của term
  • wp_termmeta: Bảng này lưu trữ các metadata của taxonomies
  • wp_term_relationships: Bảng lưu mối quan hệ giữa taxonomies và bài viết
  • wp_posts: Bảng chứa bài viết

Để dễ hiểu thì tôi khuyên bạn nên thử thêm một vài chuyên mục và sau đó vào trong cơ sở dữ liệu để xem cách nó lưu trữ, như vậy sẽ rất dễ tiếp thu.

2. Tạo Taxonomy trong WordPress

Để tạo một taxonomy thì chúng ta sử dụng hàm register_taxonomy(), và tương tự như hàm register_post_type thì hàm này sẽ được đưa vào Hook init.

Cú pháp của hàm này như sau:

register_taxonomy( $taxonomy, $object_type, $args )

Trong đó:

  • $taxonomy 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ụ wp_brand, wp_company
  • $object_type: Tên của thể loại mà taxonomy thuộc về, trong hệ thống gồm có thể loại post, page, attachment, revision, nav_menu_item hoặc là một loại thuộc 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.

Các phần tử của mảng $args:

  • label: Tên mô tả số nhiều dùng cho vấn đề dịch thuật
  • labels: Mảng này gồm nhiều phần tử và chức năng chung là chỉnh sửa text trên giao diện
    • name: Text hiển thị trên menu chính của taxonomy, ví dụ Brand
    • singular_name: Tên của taxonomy, ví dụ mỗi category thì ta gọi là mỗi category
    • menu_name: Tên hiển thị trên menu, nếu không truyền vào thì nó lấy giá trị của key name
    • all_items: Tìm hiểu sau
    • edit_item: Nhãn hiển thị thay thế cho từ Edit Tag hoặc Edit Category
    • view_item: Tìm hiểu sau
    • update_item: Nhãn hiển thị cho Update Tag hoặc Update Category
    • add_new_item: Nhãn hiển thị cho Add New tag hoặc Add New Category
    • new_item_name: Tìm hiểu sau
    • parent_item: Tìm hiểu sau
    • parent_item_colon: Tìm hiểu sau
    • search_items: Nhãn hiển thị cho Search Tag hoặc Search Category
    • popular_items: Nhãn hiển thị cho Popular Tag hoặc Popular Category
    • separate_items_with_commas: Ký tụ seperate trong hộp metabox hiển thị ở trang edit bài viết
    • add_or_remove_items: Nhãn hiển thị cho chuỗi Separate tags with commas ở hộp metabox trong trang edit bài viết
    • choose_from_most_used: Text hiển thị cho đoạn text Choose From Most Use phần Meta Box ở trong trang edit bài viết
    • not_found: Text hiển thị cho phần không tìm thấy bài viết
  • public: Nếu giá trị TRUE thì sẽ hiển thị trên menu
  • show_ui: Nếu giá trị TRUE thì hiển thị giao diện trong admin
  • show_in_menu: Nếu TRUE thì sẽ hiển thị trong Admin Menu
  • show_in_nav_menus: Nếu có giá trị TRUE thì nó sẽ hiển thị bên trang quản lý menu.
  • show_tagcloud: Hiển thị phần tag cloud ngoài frontend
  • show_in_quick_edit: Hiển thị trong phần Quick Edit bài viết
  • meta_box_cb: Hàm callback gọi đến một hàm Custom Meta Box
  • show_admin_column: Nếu giá trị TRUE thì sẽ tạo ra côt phân loại
  • description: Mô tả cho taxonomy này
  • hierarchical: nếu TRUE thì sẽ giống với Category, ngược lại sẽ giống với Tags
  • update_count_callback: Function callback sẽ gọi khi đếm số lượng của bài viết
  • query_var: Tìm hiểu sau
  • rewrite: Cấu hình rewrite URL
  • capabilities: Nhóm quyền của thể loại này

Về phần giải thích từng phần tử thì nó giống nhu trong bài Custom Post Type, vậy nên bạn hãy đọc bài đó trước khi đọc bài này nhé. Hoặc bạn có thể vào link này để xem phần giải thích trên trang chủ của nó.

Ví dụ: Tạo một Taxonomy brand

Bạn tạo một file tên là custom-taxonomy.php nằm trong thư mục includes và require file này vào file wp-learn.php.

custom taxonomy trong wordpress 1 png

Tiếp theo bạn nhập đoạn code sau vào file custom-taxonomy.php.

add_action('init', 'create_brand');

function create_brand() {
    register_taxonomy('brand', 'post', array(
            'label' => 'Brand',
            'labels' => array(
                'name'          => __('Brand'),
                'singular_name' => __('Brand'),
                'add_new_item'  => __('Add New Brand'),
                'new_item'      => __('New Brand'),
                'add_new'       => __('Add Brand'),
                'edit_item'     => __('Edit Brand')
            ),
            'public' => true,
            'hierarchical' => true
        )
    );
}

Bạn lưu lại và vào edit một bài viết bất kì thì sẽ thấy một hộp Meta Box như sau:

custom taxonomy wordpress 2 png

Tiếp theo bạn nhìn lên danh sách Admin Menu Item thì sẽ thấy xuất hiện một đường link mới như sau:

custom taxonomy wordpress 3 png

Quá đơn giản phải không các bạn :)

3. Lời kết

Qua bài này mình đã hướng dẫn các bạn cách sử dụng hàm register_taxonomy để custom taxonomy trong WordPress, hy vọng qua bài này sẽ giúp bạn hình dung được hệ thống database trong WordPress và hiểu rõ taxonomy là gì.

Để dễ hiểu thì mình khuyên bạn nên lên trang chủ của nó để đọc phần giải thích các tham số truyền vào trong hàm register_taxonomy bởi vì mình dịch sang tiếng Việt sẽ hơi khó hiểu. Hoặc bạn vừa học vừa edit các tham số và vừa vào trong hệ thống giao diện Admin để xem những thay đổi của nó để từ đó rút ra chức năng của từng tham số truyền vào.

Bài này mình dừng tại đây, bài tiếp theo có lẽ chúng ta tiếp tục tìm hiểu về Custom Post Type trong WordPress.

Cùng chuyên mục:

Child theme là gì? Cách tạo Child theme trong WordPress

Child theme là gì? Cách tạo Child theme trong WordPress

Cách tạo Shortcodes trong WordPress từ A-Z

Cách tạo Shortcodes trong WordPress từ A-Z

Cách sửa lỗi SSL trong WordPress và cài đặt

Cách sửa lỗi SSL trong WordPress và cài đặt

Sử dụng  CSS & JavaScript trong Wordpress

Sử dụng CSS & JavaScript trong Wordpress

Cách tạo và sử dụng các template file trong theme Wordpress

Cách tạo và sử dụng các template file trong theme Wordpress

Cách tạo Widget trong Theme WordPress

Cách tạo Widget trong Theme WordPress

Theme trong WordPress là gì? Cách cài đặt Theme trong WordPress

Theme trong WordPress là gì? Cách cài đặt Theme trong WordPress

Cách tạo Theme WordPress từ Scratch từ A-Z

Cách tạo Theme WordPress từ Scratch từ A-Z

Bài 06: Tạo trang quản lý Options trong WordPress

Bài 06: Tạo trang quản lý Options trong WordPress

Ở bài trước mình có nêu ra một ví dụ về quản lý thông tin…

Bài 05: Options API trong WordPress: add_option / get_option ...

Bài 05: Options API trong WordPress: add_option / get_option ...

Trong database của WordPress bạn sẽ thấy một table ten là [prefix]_options, table này sẽ…

Bài 04: Tìm hiểu Hooks , Action và Filter trong WordPress

Bài 04: Tìm hiểu Hooks , Action và Filter trong WordPress

Bạn đã từng nghe khái niệm lập trình hướng sự kiện trong các Framework như…

Bài 02: WordPress API là gì? Danh sách API trong WordPress

Bài 02: WordPress API là gì? Danh sách API trong WordPress

Đáng lẽ mình không viết bài này nhưng lúc đang viết bài tiếp theo thì…

Bài 01: WordPress là gì? Nên làm website bằng WordPress?

Bài 01: WordPress là gì? Nên làm website bằng WordPress?

WordPress là một CMS được phát triển trên ngôn ngữ lập trình PHP ...

Bài 11: Tạo Custom Post Type trong WordPress

Bài 11: Tạo Custom Post Type trong WordPress

Đây là các thể loại mặc định có sẵn sau khi bạn cài đặt WordPress.…

Bài 10: Hiển thị metadata ngoài frontend

Bài 10: Hiển thị metadata ngoài frontend

Sẵn có bạn hỏi làm thế nào để hiển thị nội dung bài viết ra…

Bài 09: Bốn bước custom Meta Boxes trong WordPress

Bài 09: Bốn bước custom Meta Boxes trong WordPress

Tới bài thứ chín này thì khái niệm Custom Meta Boxes không còn xa lạ…

Bài 08: Metadata API trong WordPress

Bài 08: Metadata API trong WordPress

WordPress sử dụng mô hình EAV nhằm giúp lập trình viên có thể tùy biến…

Bài 07: Custom Meta Boxes trong WordPress

Bài 07: Custom Meta Boxes trong WordPress

WordPress là một CMS nên hệ thống dữ liệu của nó chỉ dừng lại ở…

Bài 06: Tạo menu trong Admin WordPress

Bài 06: Tạo menu trong Admin WordPress

Ở bài tạo trang quản lý Options mình đã hướng dẫn các bạn thêm một…

Bài 03: Các bước tạo plugin trong WordPress (căn bản)

Bài 03: Các bước tạo plugin trong WordPress (căn bản)

Như ta biết WordPress là một CMS mã nguồn mở giúp quản lý nội dung…

Top