Thêm sticky post theo danh mục WordPress

3 tháng ago, WordPress Plugin, Views
Thêm sticky post theo danh mục WordPress

Giới thiệu về Sticky Post trong WordPress

Trong thế giới WordPress, “sticky post” (bài viết dính) là một tính năng cho phép bạn giữ một bài viết cụ thể ở đầu blog của mình, bất kể ngày đăng. Điều này đặc biệt hữu ích cho việc làm nổi bật những nội dung quan trọng, tin tức mới nhất, hoặc các bài viết evergreen mà bạn muốn độc giả nhìn thấy đầu tiên. Tuy nhiên, mặc định, sticky post được áp dụng trên toàn bộ trang chủ hoặc trang lưu trữ blog. Vậy làm thế nào để chúng ta chỉ định sticky post cho một danh mục cụ thể?

Bài viết này sẽ hướng dẫn bạn các phương pháp để thêm sticky post theo danh mục trong WordPress, giúp bạn kiểm soát tốt hơn nội dung được hiển thị cho người dùng khi họ duyệt các danh mục khác nhau trên website của bạn.

Tại sao cần Sticky Post theo danh mục?

Sticky post theo danh mục mang lại nhiều lợi ích, đặc biệt đối với các website có cấu trúc nội dung phức tạp:

  • Tăng tính liên quan: Hiển thị nội dung quan trọng nhất liên quan đến danh mục mà người dùng đang xem.
  • Cải thiện trải nghiệm người dùng: Giúp người dùng dễ dàng tìm thấy thông tin họ cần một cách nhanh chóng.
  • Tăng tương tác: Khuyến khích người dùng đọc các bài viết quan trọng, từ đó tăng tương tác và thời gian ở lại trên trang.
  • Quảng bá nội dung: Nổi bật các bài viết quan trọng trong từng danh mục, giúp quảng bá nội dung một cách hiệu quả hơn.

Ví dụ, nếu bạn có một blog về công nghệ với các danh mục như “Điện thoại”, “Máy tính”, và “Phần mềm”, bạn có thể muốn sticky post một bài đánh giá điện thoại mới nhất trong danh mục “Điện thoại”, một bài viết về mẹo sử dụng máy tính trong danh mục “Máy tính”, và một bài viết về phần mềm bảo mật mới nhất trong danh mục “Phần mềm”.

Các phương pháp thêm Sticky Post theo danh mục

Có nhiều cách để thêm sticky post theo danh mục trong WordPress. Dưới đây là một số phương pháp phổ biến:

1. Sử dụng Plugin

Đây là phương pháp đơn giản nhất và được khuyến khích cho người dùng không quen với code. Có rất nhiều plugin miễn phí và trả phí trên WordPress repository có thể giúp bạn thực hiện điều này. Một số plugin phổ biến bao gồm:

  • Category Sticky Post: Plugin này cho phép bạn chọn bài viết sticky cho từng danh mục.
  • Sticky Posts – Category: Plugin này cung cấp giao diện trực quan để quản lý sticky post theo danh mục.
  • Advanced Category Excluder: Mặc dù chức năng chính là loại trừ danh mục, plugin này cũng có thể được sử dụng để tạo sticky post theo danh mục bằng cách kết hợp với các plugin sticky post khác.

Hướng dẫn sử dụng plugin Category Sticky Post:

  1. Cài đặt và kích hoạt plugin “Category Sticky Post”.
  2. Truy cập trang chỉnh sửa của bài viết bạn muốn đặt làm sticky post.
  3. Trong meta box của danh mục (Categories), bạn sẽ thấy một checkbox mới cho phép bạn chọn bài viết này làm sticky post cho danh mục đó.
  4. Chọn danh mục và đánh dấu vào checkbox.
  5. Cập nhật bài viết.

2. Sử dụng Code (Sử dụng theme child)

Nếu bạn muốn kiểm soát nhiều hơn và không muốn sử dụng plugin, bạn có thể thêm code vào theme của mình. Lưu ý quan trọng: Hãy luôn sử dụng theme child để tránh mất các tùy chỉnh của bạn khi theme chính được cập nhật.

Dưới đây là một ví dụ về code bạn có thể sử dụng để hiển thị sticky post theo danh mục:


<?php
function custom_category_sticky_posts( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $sticky_posts = get_option( 'sticky_posts' );

        if ( ! empty( $sticky_posts ) ) {
            $args = array(
                'posts_per_page' => 1,
                'post__in'  => $sticky_posts,
                'ignore_sticky_posts' => 1,
                'cat' => get_queried_object_id() // Lấy ID của danh mục hiện tại
            );

            $sticky_query = new WP_Query( $args );

            if ( $sticky_query->have_posts() ) {
                while ( $sticky_query->have_posts() ) {
                    $sticky_query->the_post();
                    get_template_part( 'template-parts/content', 'sticky' ); // Thay thế 'template-parts/content', 'sticky' bằng đường dẫn đến template bạn muốn sử dụng
                }
                wp_reset_postdata();

                // Loại bỏ sticky post khỏi query chính để tránh trùng lặp
                $query->set( 'post__not_in', $sticky_posts );
            }
        }
    }
}
add_action( 'pre_get_posts', 'custom_category_sticky_posts' );
?>

Giải thích code:

  • custom_category_sticky_posts( $query ): Đây là hàm tùy chỉnh của chúng ta, nhận đối tượng $query làm tham số.
  • if ( $query->is_home() && $query->is_main_query() ): Kiểm tra xem chúng ta có đang ở trang chủ và đây có phải là query chính hay không.
  • $sticky_posts = get_option( 'sticky_posts' ): Lấy danh sách các sticky post.
  • $args = array(...): Xác định các tham số cho query sticky post.
    • posts_per_page: Số lượng sticky post muốn hiển thị (thường là 1).
    • post__in: Chỉ lấy các bài viết có ID trong danh sách sticky post.
    • ignore_sticky_posts: Bỏ qua các cài đặt sticky post mặc định.
    • cat: Quan trọng! Lấy ID của danh mục hiện tại bằng get_queried_object_id(). Điều này đảm bảo rằng chúng ta chỉ hiển thị sticky post nếu nó thuộc danh mục hiện tại.
  • $sticky_query = new WP_Query( $args ): Tạo một query mới để lấy sticky post dựa trên các tham số đã xác định.
  • get_template_part( 'template-parts/content', 'sticky' ): Hiển thị sticky post bằng cách sử dụng một template cụ thể. Bạn cần tạo một file template tên là content-sticky.php trong thư mục template-parts của theme child của bạn.
  • $query->set( 'post__not_in', $sticky_posts ): Loại bỏ sticky post khỏi query chính để tránh trùng lặp.

Các bước thực hiện:

  1. Tạo một theme child cho theme hiện tại của bạn.
  2. Mở file functions.php của theme child.
  3. Thêm đoạn code trên vào file functions.php.
  4. Tạo một file content-sticky.php trong thư mục template-parts của theme child. File này sẽ chứa code HTML để hiển thị sticky post. Bạn có thể sao chép code từ file content.php của theme chính và chỉnh sửa cho phù hợp.
  5. Chỉnh sửa code trong content-sticky.php để hiển thị thông tin bạn muốn (ví dụ: tiêu đề, trích dẫn, hình ảnh).
  6. Đặt bài viết bạn muốn làm sticky post trong WordPress admin panel.

3. Kết hợp Plugin và Code

Một số người thích kết hợp cả hai phương pháp: sử dụng plugin để quản lý sticky post một cách dễ dàng, và sử dụng code để tùy chỉnh cách hiển thị chúng. Ví dụ, bạn có thể sử dụng plugin “Category Sticky Post” để chỉ định sticky post cho từng danh mục, sau đó sử dụng code để thay đổi layout hoặc thêm các tính năng đặc biệt cho sticky post đó.

Tạo Template cho Sticky Post (content-sticky.php)

Như đã đề cập ở trên, bạn cần tạo một template riêng để hiển thị sticky post. Dưới đây là một ví dụ về code bạn có thể sử dụng trong file content-sticky.php:


<article id="post-<?php the_ID(); ?>" <?php post_class('sticky-post'); ?>>
    <header class="entry-header">
        <h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

        <div class="entry-meta">
            <?php
            printf( '<span class="posted-on"><a href="%1$s" rel="bookmark"><time class="entry-date published" datetime="%2$s">%3$s</time></a></span>',
                esc_url( get_permalink() ),
                esc_attr( get_the_date( 'c' ) ),
                esc_html( get_the_date() )
            );
            ?>
        </div><!-- .entry-meta -->
    </header><!-- .entry-header -->

    <div class="entry-content">
        <?php the_excerpt(); ?>
    </div><!-- .entry-content -->

    <footer class="entry-footer">
        <a href="<?php the_permalink(); ?>" class="read-more">Đọc tiếp</a>
    </footer><!-- .entry-footer -->
</article><!-- #post-## -->

Code này sẽ hiển thị tiêu đề, ngày đăng, trích dẫn và nút “Đọc tiếp” cho sticky post. Bạn có thể tùy chỉnh code này để phù hợp với thiết kế của theme bạn.

Lưu ý khi sử dụng Sticky Post theo danh mục

  • Hiệu suất: Sử dụng quá nhiều sticky post có thể ảnh hưởng đến hiệu suất website của bạn. Hãy cân nhắc số lượng sticky post bạn sử dụng cho mỗi danh mục.
  • Thiết kế: Đảm bảo rằng sticky post có thiết kế nổi bật và dễ nhận biết để thu hút sự chú ý của người dùng.
  • Khả năng tương thích: Kiểm tra khả năng tương thích của plugin hoặc code bạn sử dụng với theme và các plugin khác trên website của bạn.

Kết luận

Thêm sticky post theo danh mục là một cách tuyệt vời để cải thiện trải nghiệm người dùng và làm nổi bật nội dung quan trọng trên website WordPress của bạn. Bạn có thể sử dụng plugin hoặc code để thực hiện điều này, tùy thuộc vào trình độ kỹ thuật và nhu cầu của bạn. Hãy nhớ sử dụng theme child và kiểm tra kỹ lưỡng trước khi triển khai bất kỳ thay đổi nào trên website của bạn.