hướng dẫn tạo Custom Taxonomy wordpress

2 taxonomy mặc định của wordpress là Category và Tag. Nhưng như tôi đã đề cập ở bài WordPress template hierarchy thì Khi sinh ra Custom Post type sẽ cần thêm Custom Taxonomy để tạo kho lưu trữ riêng cho posttype này. Bài viết trước tôi đã hướng dẫn tạo Custom Post type “Project”. Tiếp nối đó bài viết này tôi sẽ tạo Custom Taxonomy ” Chuyên mục dự án( Project Type ) “.

Mẫu code tạo Custom Taxonomy

function create_project_type_taxonomy() {
$labels = array(
    'name'                          => 'Project Types',
    'singular_name'                 => 'Project Type',
    'search_items'                  => 'Search Project Types',
    'edit_item'                     => 'Edit Project Type',
    'update_item'                   => 'Update Project Type',
    'add_new_item'                  => 'Add New Project Type',
    'new_item_name'                 => 'New Project Type',

    );

$args = array(
    'label'                         => 'Videos Categories',
    'labels'                        => $labels,
    'public'                        => true,
    'hierarchical'                  => true,
    'show_ui'                       => true,
    'show_in_nav_menus'             => true,
    'args'                          => array( 'orderby' => 'term_order' ),
    'rewrite'                       => array( 'slug' => 'projects', 'with_front' => true, 'hierarchical' => true ),
    'query_var'                     => true
);

register_taxonomy( 'project_type', 'project', $args );
}
add_action('init', 'create_project_type_taxonomy');

Cơ bản thì ý nghĩa các tham số sẽ giống nhau, tuy nhiên trong mảng tham số của register_taxonomy có thêm 2 phần chú ý như sau:
1.register_taxonomy( ‘project_type’, ‘project’, $args );, project là tên của postype được phép sử dụng taxonomy.
2.tại mảng $args rewrite, giá trị của slug đây là slug của custom taxonomy đã tạo.

Giống như bài Custom Post Type tôi sẽ chỉ trình bày các tham số chính. Nếu các bạn muốn tìm hiểu sâu hơn hãy tham khảo tại đây

Kết hợp Custom Post Type và Custom Taxonomy

Như tôi đã đề cập ở bài WordPress template hierarchy Khi đã tạo Custom Post Type thì tốt nhất nên tạo thêm Custom Taxonomy cho nó. dưới đây là code

function create_project_post_type() {

    $label = array(
        'name' => _('Projects'), 
        'singular_name' => _('Project') ,
		'all_items'     => 'All Projects',
		'add_new' => 'Add new', 
		'add_new_item' => 'Add new Project', 
		'edit_item' => 'Edit Project', 
		'new_item' => 'Add new Project' 
    );


    $supports = array(
        'title', 
        'editor', 
        'excerpt', 
        'author', 
        'thumbnail', 
    );

    $args = array(
        'labels' => $label,
        'description' => 'Post type post project',
        'supports' => $supports,
        'taxonomies' => array( 'project_type' ),
        'hierarchical' => false, 
        'public' => true, 
        'show_ui' => true, 
        'show_in_menu' => true, 
        'show_in_nav_menus' => true, 
        'show_in_admin_bar' => true, 
        'menu_position' => 5, 
        'menu_icon' => true, 
        'can_export' => true, 
        'has_archive' => true, 
        'exclude_from_search' => false, 
        'publicly_queryable' => true, 
        'capability_type' => 'post' 
		);

    register_post_type( 'project', $args); 
}
add_action('init', 'create_project_post_type');

function create_project_type_taxonomy() {
$labels = array(
    'name'                          => 'Project Types',
    'singular_name'                 => 'Project Type',
    'search_items'                  => 'Search Project Types',
    'edit_item'                     => 'Edit Project Type',
    'update_item'                   => 'Update Project Type',
    'add_new_item'                  => 'Add New Project Type',
    'new_item_name'                 => 'New Project Type',

    );

$args = array(
    'label'                         => 'Videos Categories',
    'labels'                        => $labels,
    'public'                        => true,
    'hierarchical'                  => true,
    'show_ui'                       => true,
    'show_in_nav_menus'             => true,
    'args'                          => array( 'orderby' => 'term_order' ),
    'rewrite'                       => array( 'slug' => 'projects', 'with_front' => true, 'hierarchical' => true ),
    'query_var'                     => true
);

register_taxonomy( 'project_type', 'project', $args );
}
add_action('init', 'create_project_type_taxonomy');


Khác biệt duy nhất khi tạo project post type ở đây là tại phần taxonomies => tôi dử dụng project_type thay cho category tức là project post type chỉ chấp nhận và hiển thị project_type. ở bài trước do chưa tạo taxonomy này nên tôi dùng chung taxonomy với post type post mặc định của wordpress.

Qua 2 bài tạo Custom Post Type và Custom Taxonomy bằng code. có vẻ phức tạp và đau đầu. Bài viết sau tôi sẽ trình bày cách tạo Custom Post Type và Custom Taxonomy bằng plugin. Sẽ tiết kiệm rất nhiều thời gian và đơn giản để phát triển Custom Post Type và Custom Taxonomy .

Tags:

Bình luận

0 bình luận

  • Hãy là người đầu tiên để lại bình luận cho bài viết này!