Custom post type trong wordpress là gì?
Khi cài wordpress xong chúng ta sẽ thấy mặc định có phần post (Bài viết), phần này sẽ quản lý tất cả bài viết của website. Đối với các website blog hoặc tin tức thì nhưng vậy là đủ…
Nhưng trường hợp mình muốn làm website bán hàng, mình cần thêm 1 khu vực để đăng sản phẩm. Vậy website chỉ có 1 phần bài viết như trên là không đủ chúng ta cần tạo ra một khu vực khác để đăng sản phẩm.
Việc đi tạo khu vực để đăng sản phẩm có chức năng tương tự phần post người ta gọi là custom post type. Và khu vực mới đó người ta gọi là post type sản phẩm.
Và tất nhiên wordpress đã cung cấp sẵn các hàm, các công cụ để chúng ta tạo 1 hoặc nhiều custom post type.
Tính năng này đã giúp wordpress không dừng lại ở một CMS làm blog mà chúng ta còn có thể làm nhiều loại website khác như: Website bán hàng, bất động sản, công ty, dịch vụ, quản lý…
Cách tạo custom post type trong wordpress
Để tạo custom post type trong wordpress chúng ta sử dụng đoạn code sau, chèn đoạn code này vào file functions.php của theme đang sử dụng nhé.
Cú pháp
function tao_custom_post_type(){ /* * Biến $label để chứa các text liên quan đến tên hiển thị của Post Type trong Admin */ $label = array( 'name' => 'Sản phẩm', //Tên post type dạng số nhiều 'singular_name' => 'Sản phẩm' //Tên post type dạng số ít ); /* * Biến $args là những tham số quan trọng trong Post Type */ $args = array( 'labels' => $label, //Gọi các label trong biến $label ở trên 'description' => 'Post type đăng sản phẩm', //Mô tả của post type 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields' ), //Các tính năng được hỗ trợ trong post type 'taxonomies' => array( 'category', 'post_tag' ), //Các taxonomy được phép sử dụng để phân loại nội dung 'hierarchical' => false, //Cho phép phân cấp, nếu là false thì post type này giống như Post, true thì giống như Page 'public' => true, //Kích hoạt post type 'show_ui' => true, //Hiển thị khung quản trị như Post/Page 'show_in_menu' => true, //Hiển thị trên Admin Menu (tay trái) 'show_in_nav_menus' => true, //Hiển thị trong Appearance -> Menus 'show_in_admin_bar' => true, //Hiển thị trên thanh Admin bar màu đen. 'menu_position' => 5, //Thứ tự vị trí hiển thị trong menu (tay trái) 'menu_icon' => 'dashicons-cart', //Đường dẫn tới icon sẽ hiển thị 'can_export' => true, //Có thể export nội dung bằng Tools -> Export 'has_archive' => true, //Cho phép lưu trữ (month, date, year) 'exclude_from_search' => false, //Loại bỏ khỏi kết quả tìm kiếm 'publicly_queryable' => true, //Hiển thị các tham số trong query, phải đặt true 'capability_type' => 'post' // ); register_post_type('sanpham', $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');
Một số lưu ý:
- Hàm register_post_type nhận 2 giá trị đó là slug và tham số $args
- Slug trong hàm register_post_type sẽ sử dụng để get dữ liệu của post type ra ngoài frontend
- Trong tham số $args có thành phần ‘supports’ là đây là những thanh phần sẽ hỗ trợ trong post type sanpham. Nếu không cần sử dụng tất cả bạn có thể xóa một số thành phần cho post type của chúng ta trở nên gọn gàng hơn.
- menu_icon là icon hiển thì khi post type mới được đăng ký, các bạn có thể chọn 1 trong các icon ở đây: Danh sách icon menu trong admin wordpress
Sau khi tạo custom post type thành công các bạn vào admin sẽ thấy xuất hiện menu sản phẩm như hình dưới.
Tạo custom post type trong wordpress bằng plugin:
Phía trên là cách tạo custom post type bằng code. WordPress có rất nhiều plugin giải quyết vấn đề này ví dụ như
- Custom post type bằng plugin toolset types
- Custom Post Type UI
- Custom Post Types and Custom Fields creator – WCK
- Pods – Custom Content Types and Fields
- Custom Post Type Maker
Hiển thị bài viết của custom post type trong wordpress
Chúng ta sẽ sử dụng vòng lặp get post trong wordpress để lấy bài viết của custom post type. Các bạn sử dụng đoạn code phía dưới nhé.
Cú pháp hiển thị sử dung New wp_query
<?php $args = array( 'post_status' => 'publish', 'posts_per_page' => -1, 'post_type' => 'sanpham' ); $the_query = new WP_Query( $args ); ?> <?php if( $the_query->have_posts() ): ?> <?php while( $the_query->have_posts() ) : $the_query->the_post(); ?> // Thông tin cần lấy của 1 bài viết <?php endwhile; ?> <?php endif; ?> <?php wp_reset_query(); ?>
Như các bạn đã thấy thì so với get bài viết thông thường get bài viết của post type chỉ có một điểm thay đổi đó là: ‘post_type’ => ‘sanpham’ sanpham ở đây là slug của post type mà chúng ta khai báo trong phần tạo custom post type, còn lại mọi thứ đều tương tự post.
Đặt tên file get danh sách bài viết, trang chi tiết của custom post type:
Để lấy danh sách tất cả bài viết trong custom post type vừa tạo chúng ta chạy được dẫn: domain.com/sanpham => sanpham là slug khi đăng ký post type, khi chạy đường dẫn đó chúng sẽ gọi file: archive-sanpham.php
Đối với trang chi tiết của custom post type nó sẽ nhận file: single-sanpham.php
Tổng kết:
Như vậy hôm nay Congtyannhien đã hướng dẫn cho bạn các bạn các tạo custom post type, đây là một trong những tính năng hay nhất của wordpress đã làm cho wordpress trở thành một cms mạnh mẽ và được nhiều người sử dụng.
Điều kiện wordpress mạnh mẽ là custom được nhiều thứ, giúp wp trở thành đa năng. Các bài viết sau mình sẽ hướng dẫn bạn custom một số thành phần khác của wordpress
Chúc các bạn học lập trình theme wordpress thành công, chào các bạn!