Cách Thêm Category Và Tag Cho Custom Post Type
hiện tại tôi đang quản lý cho trang linh kiện điện thoại, trong quá trình làm trang bán hàng này tôi gặp khá nhiều lỗi nhỏ mặc dù không lớn. Lúc trước tôi làm cho các sản phẩm dùng chung tag với post, nhưng hôm nay mới phát hiện ra các tag này vẫn tồn tại nhưng không thể hiện các sản phẩm khi truy cập vào tag này được. Chỉ có post mới truy cập được, loay hoay gần 20 phút mới sửa được lỗi, post lên đây cho anh em tham khảo kinh nghiệm xương máu này.
để kích hoạt chức năng tag dành cho custom post type khi khai báo bạn thêm dòng sau vào trong hàm “register_post_type” nhé, ví dụ cho dễ:
add_action('init', 'create_product_post_type');
function create_product_post_type()
{
register_post_type('product',
array(
'labels' => array(
'name' => __('Sản Phẩm'),
'singular_name' => __('Sản Phẩm'),
'add_new' => __('Thêm SP'),
'add_new_item' => __('Thêm SP'),
'edit' => __('Chỉnh Sửa'),
'edit_item' => __('Chỉnh Sửa'),
'new_item' => __('Thêm SP'),
'view' => __('Xem Sản Phẩm'),
'view_item' => __('Xem Sản Phẩm'),
'search_items' => __('Tìm Sản Phẩm'),
'not_found' => __('Không tìm thấy sản phẩm nào'),
'not_found_in_trash' => __('Không có sản phẩm nào trong thùng rác')
),
'public' => true,
'show_ui' => true,
'publicy_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 20,
'rewrite' => array('slug' => false, 'with_front' => false),
'menu_icon' => get_stylesheet_directory_uri(). '/images/cart.png',
'hierarchical' => false,
'query_var' => true,
'supports' => array(
'title', 'editor', 'comments', 'author', 'excerpt', 'thumbnail', 'tag', 'custom-fields'
),
//'taxonomies' => array('post_tag', 'category'),
'can_export' => true,
//'register_meta_box_cb' => 'call_to_function_do_something',
'description' => __('Mô tả sản phẩm ở đây.'),
'taxonomies' => array('post_tag')
)
);
}
trong đoạn code trên thì phần quan trọng nhất chính là “‘taxonomies’ => array(‘post_tag’)” nếu các bạn muốn nhúng thêm category vô nữa thì sửa thành “‘taxonomies’ => array(‘category’,’post_tag’)”
sau đây là đoạn code để khi query post nó sẽ lấy luôn phần custom post type nè
function wpa_cpt_tags( $query ) {
if ( $query->is_tag() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'post', 'product' ) );
}
}
thêm đoạn code trên nữa là khi bạn truy cập vào các tag thì sẽ hiển thị luôn cả custom post type mang tag đó, quá kool.
Nếu bạn chọn thêm category thì thêm điều kiện “is_category” vào trong đoạn mã trên nhé