Tạo series bài viết trong WordPress với plugin Meta Box

Tạo series bài viết trong WordPress với plugin Meta Box

Đôi khi việc phân loại bài viết bằng Category hay Tag đối với bạn vẫn chưa đủ, và bạn cần dùng thêm một hình thức đó là tạo series bài viết (chuỗi bài viết). Việc tạo series như vậy sẽ giúp người đọc theo dõi chuỗi bài viết dễ dàng hơn. Trong bài viết này, mình sẽ hướng dẫn bạn tạo series cho bài viết bằng cách sử dụng plugin Meta Box.

Tất nhiên là bạn hoàn toàn có thể sử dụng Category để tạo một series cho bài viết. Nhưng cách này có một vài nhược điểm như sau:

  • Bạn có thể sẽ cần tạo rất nhiều series bài viết khác nhau. Nhưng nếu dùng category, việc tạo quá nhiều category sẽ làm cấu trúc và phân loại bài viết của bạn bị rối rắm và cồng kềnh;
  • Nếu bạn đặt permalink của bài viết có bao gồm tên category, thì việc sử dụng category sẽ làm các link của bạn nhìn phức tạp hơn, dài hơn, và có quá nhiều loại link;
  • Category hiển thị bài viết theo thứ tự bài mới nhất rồi đến các bài cũ hơn. Nhưng hầu hết người dùng lại cần đọc từ bài đầu tiên trong chuỗi bài. Như vậy họ sẽ phải kéo xuống tận cùng thì mới tìm được. Sử dụng series sẽ giúp bạn cải thiện việc đó, đảo ngược thứ tự bài viết theo thời gian đăng từ bài đầu tiên, cho đến bài cuối cùng. Việc này sẽ giúp người đọc dễ tìm bài viết để đọc hơn.

Chính vì các lý do đó, mình quyết định tạo series cho bài viết theo một cách khác. Và sử dụng Meta Box plugin đã giúp mình thao tác việc này khá dễ dàng bằng cách tạo một taxonomy mới.

Bây giờ, hãy cùng xem cách làm của mình nhé.

Chuẩn bị

Bạn cần cài đặt và kích hoạt 2 plugin sau lên website WordPress của bạn:

  • Meta Box plugin
  • MB Custom Taxonomy: Đây là một extension miễn phí của Meta Box plugin, nhưng cần cài đặt riêng biệt. Extension này cho phép tạo và quản lý custom taxonomy với giao diện trực quan.

Cả 2 plugin này đều miễn phí và bạn đều có thể tải và cài đặt trực tiếp từ trong admin dashboard được nhé.

Cài đặt plugin Meta Box và MB Custom Taxonomy trực tiếp từ giao diện admin

Cài đặt plugin Meta Box và MB Custom Taxonomy trực tiếp từ giao diện admin

Bước 1: Tạo một Custom Taxonomy mới

Như đã nói ở trên, mình sẽ tạo một custom taxonomy mới để phục vụ cho việc tạo series bài viết. Hai plugin trên của Meta Box sẽ giúp mình làm việc này.

Đầu tiên, trong giao diện admin dashboard, bạn tìm đến menu Meta Box > Taxonomies > Add New.

Tạo một Custom Taxonomy mới

Trong giao diện tạo taxonomy này, bạn nhập các thông tin cơ bản cho nó như sau:

Nhập thông tin cho Taxonomy

Nhập thông tin cho Taxonomy

Trong mục Assign To Post Types, bạn chọn loại post types của nhóm bài viết bạn muốn đặt series nhé. Ở đây, mình chọn Post (tức các bài viết dạng blog post mặc định).

Bạn nhớ lưu taxonomy này lại và vào thử giao diện chỉnh sửa bài viết để kiểm tra. Lúc này, bạn sẽ thấy xuất hiện thêm một mục tên là Series như ảnh dưới đây:

Mục Series xuất hiện trong phần chỉnh sửa bài viết

Mục Series xuất hiện trong phần chỉnh sửa bài viết

Bây giờ, bạn muốn bài viết thuộc series nào thì chỉ cần nhập tên series đó vào. Bạn hoàn toàn có thể tạo series mới, hoặc chọn cái có sẵn ngay tại ô này luôn.

Bước 2: Hiển thị các bài viết theo series ngoài frontend

Ví dụ như trang metabox.iomột series bài về Custom Fields như sau:

Hiển thị các bài viết theo series ngoài frontend

Bạn thấy đấy, có 2 phần trong trang này:

  1. Hiển thị ngắn gọn danh sách các bài chỉ với tiêu đề bài viết
  2. Hiển thị lần lượt các bài viết với tiêu đề, ảnh, và mô tả

Đồng thời, tất cả các bài viết đều hiển thị theo thứ tự bài cũ nhất rồi đến bài mới nhất. Để làm được như trên, mình thao tác lần lượt như sau:

Tạo giao diện cho trang hiển thị series bài viết

Tạo một file có tên là taxonomy-{taxonomy}.php đặt vào thư mục theme của bạn. Trong đó {taxonomy} chính là slug của custom taxonomy mà bạn vừa tạo ở trên nhé. Theo đó thì file của mình sẽ tên là taxonomy-series.php.

Tạo file taxonomy-{taxonomy}.php trong thư mục theme

Tạo file trong thư mục theme

File này sẽ được sử dụng để quy định cách mà series hiển thị trên frontend. Nếu bạn thực hiện đúng các thao tác ở trên, thì đến đây, khi bạn truy cập vào trang danh sách các bài có trong một series nào đó, giao diện trang này sẽ hiển thị như sau:

Tạo giao diện cho trang hiển thị series bài viết

Tiếp theo, bạn hãy copy nội dung có trong file archive.php trong cùng thư mục theme của bạn sang file bạn vừa tạo (file taxonomy-{taxonomy}.php) nhé.

Copy nội dung từ file `Archive.php`

Copy content from Archive.php file

Đồng thời, bạn cũng thêm đoạn code sau vào file taxonomy-{taxonomy}.php.

if ( have_posts() ) :
    echo ‘<ul class="series-list">’;
    while ( have_posts() ) : the_post();
        echo '<li><a href="'.get_the_permalink().'">'.get_the_title().'</a></li>';
    endwhile;
    echo ‘</ul>’;
endif;
Thêm code vào file giao diện của taxonomy

Thêm code vào file giao diện của taxonomy

Lúc này series của bạn đã hiển thị theo style của theme, nhưng thứ tự lại là bài mới nhất trước, bài cũ hiển thị sau. Vì vậy mình sẽ cần theo tác tiếp để đảo ngược thứ tự này lại.

Series bài viết hiển thị với thứ tự bị ngược

Series bài viết hiển thị với thứ tự bị ngược

Đảo ngược thứ tự bài viết trong series

Bạn tiếp tục thêm đoạn code dưới đây vào file functions.php ở trong thư mục theme.

add_action( 'pre_get_posts', 'series_post_order');
function series_post_order($query){
    if(taxonomy_exists('series')):
        $query->set( 'order', 'ASC' );
        $query->set( 'orderby', 'date' );
    endif;
};

Bạn nhớ đổi biến series ở trên thành tên của taxonomy bạn tạo lúc nãy nhé.

Sắp xếp lại thứ tự bài viết

Sắp xếp lại thứ tự bài viết

Sau khi hoàn tất, trang series bài viết của bạn sẽ hiển thị như sau:

Tạo giao diện cho trang hiển thị series bài viết

Kết luận

Với MB Custom Taxonomy của Meta Box, việc tạo series cho bài viết trở nên khá đơn giản phải không? Tuy nhiên, cũng có một số cách khác nữa để tạo series bài viết mà bạn có thể tham khảo thêm. Ở đây mình đưa ra cách này để các bạn có thể hiểu thêm về ứng dụng của Meta Box khi vào thực tế thôi nhé.

Cũng nhân tiện đây, mời các bạn xem thêm về series các bài viết nói về ứng dụng của Meta Box trong trường hợp cụ thể trong thực tế nhé.

Gửi phản hồi