Sẽ có rất nhiều trường hợp bạn sẽ cần đến một tính năng mà nó có thể giúp bạn liên kết giữa các post trong mỗi post type lại với nhau theo cách đơn giản nhất. Hãy nghĩ ra một ví dụ thực tiễn nhất, đó là làm một trang web đọc truyện chẳng hạn, ví dụ mình có môt hình như sau:
Post Type 1 – Bộ truyện
- Bộ truyện 1 => Tập truyện ABC 1| Tập truyện ABC 2
- Bộ truyện 2 => Tập truyện CDE – 1|Tập truyện CDE 2
Post Type 2 – Tập truyện
- Tập truyện ABC – 1
- Tập truyện ABC – 2
- Tập truyện CDE – 1
- Tập truyện CDE -2
Mô hình trên có nghĩa mình có 2 post type khác nhau, một post type chuyên để đăng tên bộ truyện, mỗi một bộ truyện là một post trong Post Type 1. Một post type khác với tên Post Type 2 sẽ được dùng để chuyên đăng các tập truyện và mỗi một tập sẽ là một post type trong Post Type 2, không phân biệt tập đó là của truyện nào.
Xem thêm: Hướng dẫn tạo Custom Post Type.
Và khi chúng ta vào xem Bộ truyện 1, nó sẽ hiển thị danh sách các post của Post Type 2 bên dưới tương ứng với những tập truyện của Bộ truyện 1.
Trên blog mình đã từng có một bài hướng dẫn viết code từ A tới Z một tính năng như thế nhưng tác giả vớ vẩn của bài viết đã biến mất rồi nên mình cũng xóa bài đó đi để tránh việc user làm theo nhưng không biết fix lỗi thế nào. Do vậy, trong bài này mình sẽ giới thiệu đến các bạn một plugin có thể làm việc này dễ dàng hơn và bạn có thể sử dụng nó như một tính năng liên kết các post giữa 2 post type lại với nhau để làm được việc như ý muốn, plugin đó có tên là Post Connector (có cả phiên bản trả phí). Một điều thú vị rằng plugin này do Yoast sáng lập ra và phát triển, nhưng sau đó được chuyển sang một chủ sở hữu khác.
Sử dụng Post Connector
Plugin này có một cái hay là có thể cho phép bạn tạo ra nhiều Connectons, mỗi connecton sẽ có vai trò liên kết giữa các post type mà bạn thích để làm phong phú các tính năng hơn, dĩ nhiên bạn vẫn có thể liên kết một post type về chính nó để làm các tính năng kiểu như bài liên quan tùy ý chẳng hạn.
Và khi tạo ra, bạn có thể tùy chọn nó tự động hiển thị danh sách các post được chọn trong child post type (post type được liên kết) mà không cần phải tự thêm code vào theme.
Mỗi khi tạo xong post type, nếu bạn vào tạo post ở parent post type thì sẽ có tùy chọn thêm những post trong child post type như dưới đây, viết mới một child post hoặc thêm một child post đã có sẵn đều chấp nhận.
Cuối cùng là nó đã có thể tự hiển thị các child post bên dưới nội dung của post mẹ nếu bạn cho phép nó tự động hiển thị.
Hoặc bạn có thể dùng shortcode để hiển thị danh sách các child post ở vị trí trong bài mà mình thích.
Nhưng bạn muốn nó hiển thị các child post ở vị trí sidebar? Không thành vấn đề, nó có hỗ trợ bạn một widget để hiển thị các child post của post hiện tại hoặc bất cứ post nào tùy thích.
Hoặc bạn thích tự viết code hiển thị cho nó…sang chảnh hoặc là để tùy biến theo ý thích của mình? Cũng không thành vấn đề luôn, bạn có thể sử dụng các code dưới đây để hiển thị post theo ý của bạn.
$tap_truyen = new SP_Post_Link_Manager();
$my_connected_posts = $tap_truyen->get_children( "tap-truyen", get_the_id() );
Bạn có thể xem thêm các API khác tại đây nhưng hãy nhớ API chỉ được sử dụng khi bạn sử dụng phiên bản PRO. Hoặc có một cách khác là soi code của plugin để tự tạo cho mình một hàm để hiển thị child post. Một lợi ích khác khi sử dụng phiên bản PRO là bạn có thể gửi yêu cầu trợ giúp đến tác giả để họ có thể giúp bạn sửa code hoặc tìm ra một code phù hợp với yêu cầu của bạn, cái này mình xác nhận nhé.
Rất dễ phải không nào?