WordPress Custom Post Type Toàn Tập

Discussion in 'Thủ thuật mã nguồn' started by Twisted, Nov 29, 2014.

  1. Twisted Membership

    Cũng thuộc khuôn khổ bài quan trọng nên mình cũng xin viết lại về vấn đề này do hai bài cũ kia hiện nay hơi lỗi thời vì một số cập nhật trong WordPress 3.8.1. Ở bài này, mình sẽ hướng dẫn chi tiết nhưng ngắn gọn về khái niệm Custom Post Type và cách làm việc với Custom Post Type thông qua code.

    [​IMG]

    Mặc định trong WordPress sẽ cho bạn Page và Post để xuất bản nội dung và hai cái này được gọi là post type. Nếu bạn có nhu cầu sử dụng nhiều hơn 2 post type, ví dụ làm thêm một post type khác với mục đích đăng sản phẩm thì bắt buộc chúng ta phải tự tạo một post type tương ứng, và cái post type mà do chúng ta tự tạo ra thì được gọi là Custom Post Type.

    Một Custom Post Type sẽ hoàn toàn có đủ những “tố chất” giống hệt như hai post type mặc định, nghĩa là bạn có thể sử dụng category, tag, custom field, featured image,….và có thể gọi hiển thị ra ngoài trang chủ cùng lúc với Post.

    Cách tạo Custom Post Type

    Hãy nên nhớ rằng, hiện nay ít ai tạo custom post type bằng cách gõ từng dòng code như trong bài này mà sẽ sử dụng các công cụ mà mình sẽ đề cập ở cuối bài, do đó có thể bạn không cần nhớ hết các tham số khi tạo. Nhưng các bạn lưu ý dùm mình là hãy đọc kỹ bài để hiểu quy trình tạo một custom post type như thế nào để dễ dàng khi làm việc về sau.

    Giống như làm việc với các code tạo widget hay tạo shortcode, để tạo một custom post type bạn có thể viết vào file functions.php của theme hoặc tạo plugin.

    Để tạo custom post type ta có cấu trúc code như sau:
    Không có gì là khó hiểu, đầu tiên là ta sẽ tạo một hàm riêng để tạo custom post type và cuối cùng này là kích hoạt cái hàm này vào action hook init là xong.

    Trong hàm tao_custom_post_type() là một hàm register_post_type() để khởi tạo custom post type với các tham số mà ta sẽ khai báo trong biến $args. Thế là hết.

    Đó là cấu trúc, quan trọng là ta sẽ khai báo những gì trong đó. Bạn có thể xem qua các tham số tại register_post_type – WordPress Codex.

    Các tham số trong code tạo Custom Post Type

    Dưới đây là cách khai báo tham số quan trọng nhất, những tham số dạng optional mình sẽ bỏ qua.

    Giả sử mình cần tạo một custom post type để đăng sản phẩm thì sẽ có code như sau.
    Giải thích thì trong code mình đã giải thích khá chi tiết rồi nên ở đây mình không nói lại, mình chỉ cần bạn để ý giúp register_post_type( 'sanpham', $args ) vì đó là đoạn khởi tạo Custom Post Type với tên là sanpham.

    Kết quả ta có…

    [​IMG]

    Woooot!!! Thành công rồi ha, rê chuột vào bạn cũng thấy phần xem tất cả các post bên trong post type đó và nút Add new để thêm post mới giống như Page/Post. Vậy là coi như bạn đã tạo xong một Custom Post Type rồi á.

    Hiển thị custom post type ra trang chủ

    Mặc định nếu ngoài trang chủ bạn đang hiển thị danh sách các post mới nhất thì nó chỉ lấy bài trong Post hiển thị chứ không lấy post của một custom post type ra, để cho nó hiển thị bạn chỉ cần chèn thêm dòng này vào functions.php
    Bạn nhớ thay sanpham thành tên slug của custom post type bạn vừa tạo nhé. Đó là lý do vì sao mình kêu bạn nhớ cái slug này, còn nhiều việc để dùng nữa.

    Tạo file hiển thị nội dung custom post type

    Dựa vào cấu trúc của theme, thì mặc định custom post type sẽ hiển thị dựa theo code của file single.php trong theme. Nếu bạn muốn nó hiển thị khác, thì cứ tạo một file tên là single-{slug-post-type}.php. Như ví dụ này thì mình sẽ tạo file tên là single-sanpham.php để hiển thị nội dung trong post type riêng này.

    Bạn có thể copy toàn bộ code bên file single.php qua file mới tạo này và sửa lại cho nhanh.
    Sử dụng trong Loop

    Để hiển thị danh sách các bài trong một custom post type ra ngoài bằng Loop & Query thì chỉ cần khai báo thêm một tham số post_type vào là được. Ví dụ:
    Quá dễ dàng.

    Công cụ tạo Custom Post Type nhanh

    Như mình đã nói ở đầu bài, bây giờ ít ai tạo Custom Post Type mà viết từng dòng code mà thay vào đó là sử dụng các công cụ tạo cho nhanh bởi vì thực tế bước tạo nó cũng chỉ có nhiêu đó chứ không khác hơn. Dưới đây là các công cụ mà bạn nên xem qua:
    • Custom Post Type Generator – Cho phép bạn tạo custom post type nhanh chóng bằng việc chọn một số tùy chọn có sẵn và lấy toàn bộ code về. Bạn chỉ cần copy đoạn code này vào file functions.php hoặc làm plugin riêng là xong.
    • Custom Post Type UI - Plugin miễn phí cho phép tạo custom post type nhanh chóng trực tiếp trong WP-Admin.
    Vậy thôi, còn các công cụ khác nó nhiều tính năng quá nên mình không đề cập tới vì rất hại não. :giggle:
     
    #1

Share This Page