Tối ưu WordPress: Hiển thị Bài viết Liên quan Không Cần Plugin

Tối ưu WordPress: Hiển thị Bài viết Liên quan Không Cần Plugin

9 views

Việc hiển thị bài viết liên quan là một chiến lược quan trọng để tăng cường trải nghiệm người dùng và cải thiện SEO trên website WordPress. Thay vì phụ thuộc vào các plugin có thể làm chậm trang, giải pháp nhúng code trực tiếp mang lại hiệu suất vượt trội và sự kiểm soát tối đa. Bài viết này sẽ đi sâu phân tích cách triển khai tính năng này một cách hiệu quả, không chỉ cung cấp mã mà còn giải thích ý nghĩa và lợi ích đằng sau từng dòng lệnh.

Tại sao nên hiển thị bài viết liên quan mà không dùng Plugin?

Trong thế giới WordPress, plugin là con dao hai lưỡi. Chúng tiện lợi nhưng cũng tiềm ẩn rủi ro về hiệu suất, bảo mật và khả năng tương thích. Việc tự triển khai tính năng bài viết liên quan mà không cần plugin mang lại nhiều lợi ích chiến lược:

  • Tăng tốc độ tải trang: Mỗi plugin đều thêm vào các tập lệnh, kiểu dáng và truy vấn cơ sở dữ liệu, làm tăng thời gian tải trang. Loại bỏ plugin không cần thiết giúp giảm gánh nặng cho máy chủ, cải thiện các chỉ số Core Web Vitals quan trọng như Largest Contentful Paint (LCP) và First Input Delay (FID).
  • Cải thiện bảo mật: Ít plugin hơn đồng nghĩa với ít điểm yếu tiềm tàng hơn để kẻ tấn công khai thác.
  • Kiểm soát hoàn toàn: Bạn có thể tùy chỉnh chính xác cách các bài viết liên quan được hiển thị, từ số lượng, tiêu chí đến kiểu dáng, mà không bị giới hạn bởi các tùy chọn của plugin.
  • Học hỏi và nâng cao kỹ năng: Việc tự viết code giúp bạn hiểu sâu hơn về kiến trúc WordPress và cách hoạt động của vòng lặp (loop).

Điều gì khiến mã code này hiệu quả?

Mã code được cung cấp sử dụng các hàm WordPress cốt lõi để truy vấn và hiển thị bài viết, đảm bảo hiệu suất tối ưu và tính tương thích cao.

relatesposts

Phân tích Code hiển thị bài viết liên quan theo Tags

Code này tập trung vào việc tìm kiếm các bài viết có cùng thẻ (tags) với bài viết hiện tại. Thẻ thường đại diện cho các chủ đề cụ thể hơn so với chuyên mục, do đó, bài viết liên quan theo thẻ thường có tính liên kết chặt chẽ về nội dung.

<?php
/*
* Code hiển thị bài viết liên quan theo post tag
* Code by levantoan.com
*/
$tags = wp_get_post_tags(get_the_ID());
if ($tags){
echo '<div id="relatedpost">';
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array(get_the_ID()),
'posts_per_page' => 3,
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ):
echo '<ul>';
while ($my_query->have_posts()):$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
echo '</ul>';
endif;
wp_reset_query();
echo '</div>';
}
?>
  • $tags = wp_get_post_tags(get_the_ID());: Đây là bước đầu tiên và quan trọng nhất. get_the_ID() lấy ID của bài viết hiện tại, sau đó wp_get_post_tags() lấy tất cả các thẻ của bài viết đó. Việc này đảm bảo các bài viết được đề xuất thực sự “liên quan” đến nội dung đang đọc.
  • if ($tags): Kiểm tra xem bài viết hiện tại có gắn thẻ nào không. Nếu không có thẻ, sẽ không có bài viết liên quan nào được hiển thị, tránh hiển thị một phần rỗng.
  • $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;: Tạo một mảng chứa ID của tất cả các thẻ. WP_Query sẽ sử dụng mảng này để tìm kiếm các bài viết khác.
  • $args = array(...): Đây là đối tượng truy vấn chính của WordPress.
    • 'tag__in' => $tag_ids: Yêu cầu WordPress chỉ tìm các bài viết có ít nhất một trong các thẻ có trong mảng $tag_ids.
    • 'post__not_in' => array(get_the_ID()): Đảm bảo bài viết hiện tại không bị lặp lại trong danh sách liên quan. Đây là một chi tiết nhỏ nhưng cần thiết cho trải nghiệm người dùng.
    • 'posts_per_page' => 3: Giới hạn số lượng bài viết liên quan được hiển thị là 3. Bạn có thể thay đổi số này tùy theo bố cục và sở thích.
  • $my_query = new wp_query($args);: Khởi tạo một đối tượng truy vấn mới với các tham số đã định.
  • Vòng lặp while ($my_query->have_posts()): $my_query->the_post();: Đây là vòng lặp tiêu chuẩn của WordPress để duyệt qua các bài viết tìm được.
  • wp_reset_query();: Điểm cực kỳ quan trọng! Sau khi hoàn thành một WP_Query tùy chỉnh, việc gọi wp_reset_query() là bắt buộc để khôi phục biến $post toàn cục và dữ liệu bài viết gốc. Nếu bỏ qua, có thể gây ra lỗi hiển thị hoặc xung đột với các vòng lặp khác trên trang.

Phân tích Code hiển thị bài viết cùng chuyên mục

Mã code này tương tự như code theo tags nhưng sử dụng chuyên mục (categories) làm tiêu chí liên quan. Chuyên mục thường rộng hơn thẻ, giúp người dùng khám phá các bài viết trong cùng một lĩnh vực tổng thể.

<?php
/*
* Code hiển thị bài viết liên quan trong cùng 1 category
* Code by levantoan.com
*/
$categories = get_the_category(get_the_ID());
if ($categories){
echo '<div class="relatedcat">';
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array(get_the_ID()),
'posts_per_page' => 5, // So bai viet dc hien thi
);
$my_query = new wp_query($args);
if( $my_query->have_posts() ):
echo '<h3>Các tin khác</h3><ul>';
while ($my_query->have_posts()):$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
echo '</ul>';
endif; wp_reset_query();
echo '</div>';
}
?>

Cấu trúc code này gần như tương đồng với code theo tags, chỉ khác biệt ở hàm lấy dữ liệu và tham số truy vấn:

  • $categories = get_the_category(get_the_ID());: Lấy tất cả các chuyên mục của bài viết hiện tại.
  • 'category__in' => $category_ids: Tham số truy vấn thay đổi để tìm kiếm các bài viết thuộc các chuyên mục đã chỉ định.
  • 'posts_per_page' => 5: Ví dụ này hiển thị 5 bài viết liên quan, nhiều hơn so với ví dụ theo tags. Điều này có thể hợp lý vì chuyên mục thường có nhiều bài viết hơn thẻ.

Lợi ích sâu rộng và khuyến nghị triển khai

Việc tự triển khai các tính năng cốt lõi như bài viết liên quan mang lại nhiều lợi ích không chỉ về kỹ thuật mà còn về chiến lược nội dung:

  • Tối ưu hóa SEO nội bộ: Các liên kết nội bộ đến bài viết liên quan giúp phân phối “link juice” và cải thiện thứ hạng của các trang khác trên website. Nó cũng báo hiệu cho công cụ tìm kiếm về cấu trúc và sự liên kết chặt chẽ của nội dung.
  • Tăng thời gian ở lại trang (Dwell Time): Khi người dùng tìm thấy nội dung liên quan dễ dàng, họ có xu hướng ở lại trang lâu hơn, khám phá nhiều bài viết hơn, giảm tỷ lệ thoát (bounce rate).
  • Tạo trải nghiệm người dùng liền mạch: Đề xuất nội dung phù hợp giúp người đọc tiếp tục hành trình khám phá, tăng sự hài lòng và gắn kết với website.

Để triển khai hiệu quả, bạn nên đặt code này vào file single.php của theme WordPress, ở vị trí bạn muốn hiển thị danh sách bài viết liên quan (thường là sau nội dung bài viết chính). Sau đó, hãy thêm CSS tùy chỉnh để định dạng danh sách này theo phong cách thiết kế của website.

Việc đầu tư vào các giải pháp code tay như thế này, thay vì dựa dẫm vào plugin, là một bước tiến quan trọng để xây dựng một website WordPress vững chắc, nhanh chóng và dễ quản lý, đặc biệt phù hợp với định hướng công nghệ của Tips AI Tech. Hãy bắt đầu áp dụng ngay để nâng cao hiệu suất và giá trị cho website của bạn!

Các câu hỏi thường gặp (FAQ)

Tại sao nên hiển thị bài viết liên quan mà không dùng plugin?
Vì việc tự triển khai mang lại nhiều lợi ích chiến lược như: tăng tốc độ tải trang, cải thiện bảo mật, kiểm soát hoàn toàngiúp nâng cao kỹ năng về kiến trúc WordPress.
Việc tự triển khai tính năng bài viết liên quan mang lại những lợi ích cụ thể nào?
Mang lại các lợi ích chiến lược bao gồm: tăng tốc độ tải trang (cải thiện Core Web Vitals như LCP, FID), cải thiện bảo mật (ít điểm yếu hơn), kiểm soát hoàn toàn cách hiển thị và nâng cao kỹ năng hiểu biết về WordPress.
Điều gì khiến mã code hiển thị bài viết liên quan được cung cấp trong bài viết hiệu quả?
Mã code sử dụng các hàm WordPress cốt lõi để truy vấn và hiển thị bài viết, đảm bảo hiệu suất tối ưutính tương thích cao.
Mã code hiển thị bài viết liên quan theo tags hoạt động như thế nào?
Mã này lấy ID của bài viết hiện tại, sau đó lấy tất cả các thẻ của bài viết đó, tạo một mảng chứa ID của các thẻ. Tiếp theo, nó sử dụng WP_Query để tìm kiếm các bài viết khác có ít nhất một trong các thẻ đó, đồng thời loại trừ bài viết hiện tạigiới hạn số lượng hiển thị. Cuối cùng, wp_reset_query() được gọi để khôi phục biến $post toàn cục.
Hàm `wp_reset_query()` có vai trò gì trong code hiển thị bài viết liên quan?
Sau khi hoàn thành một WP_Query tùy chỉnh, việc gọi wp_reset_query()bắt buộc để khôi phục biến $post toàn cụcdữ liệu bài viết gốc, tránh gây ra lỗi hiển thị hoặc xung đột với các vòng lặp khác trên trang.
Mã code hiển thị bài viết liên quan theo tags và theo chuyên mục khác nhau ở điểm nào?
Cấu trúc code gần như tương đồng, điểm khác biệt chính là hàm lấy dữ liệu (wp_get_post_tags() so với get_the_category()) và tham số truy vấn ('tag__in' so với 'category__in') trong đối tượng WP_Query.
Nên đặt code hiển thị bài viết liên quan vào đâu trong theme WordPress?
Bạn nên đặt code này vào file single.php của theme WordPress, ở vị trí bạn muốn hiển thị danh sách (thường là sau nội dung bài viết chính).
Cần làm gì sau khi đã đặt code hiển thị bài viết liên quan vào theme WordPress?
Sau đó, hãy thêm CSS tùy chỉnh để định dạng danh sách này theo phong cách thiết kế của website.
Việc tự triển khai tính năng bài viết liên quan mang lại những lợi ích sâu rộng nào ngoài kỹ thuật?
Mang lại nhiều lợi ích chiến lược như: tối ưu hóa SEO nội bộ (phân phối “link juice”, cải thiện thứ hạng), tăng thời gian ở lại trang (giảm tỷ lệ thoát), và tạo trải nghiệm người dùng liền mạch.
Đánh giá ngay!
(0 lượt đánh giá - 0/5)
Cao Thiên
Là một người đam mê công nghệ AI, tôi sáng lập Tips AI Tech để chia sẻ kiến thức và xu hướng mới nhất, giúp mọi người dễ dàng tiếp cận và ứng dụng AI vào cuộc sống.