Nội dung
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
WordPress tích hợp sẵn nguồn cấp RSS theo mặc định. Bạn có thể tùy chỉnh RSS với nguồn cấp dũ liệu phong phú như thêm ảnh đại diện của bài đăng vào RSS. Nguồn cấp dữ liệu RSS là tính năng đầy đủ cho hầu hết người dùng, nhưng bạn có thể muốn tạo nguồn cấp RSS tùy chỉnh để cung cấp loại nội dung cụ thể. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tạo nguồn cấp RSS tùy chỉnh trong WordPress.
Xin lưu ý rằng hướng dẫn này không dành cho người dùng mới sử dụng WordPress. Nếu bạn là người mới bắt đầu và vẫn muốn thử, thì vui lòng thực hiện cài đặt WordPress trên localhost với xampp.
Như mọi khi, bạn phải tạo một bản sao lưu WordPress hoàn chỉnh của mình trước khi thực hiện bất kỳ thay đổi nào đối với một trang web đang chạy thực.
Giả sử bạn muốn tạo một nguồn cấp RSS mới hiển thị những thông tin sau:
- Title
- Link
- Published Date
- Author
- Excerpt
Để thêm tùy chỉnh dữ liệu RSS, bạn thêm đoạn mã sau vào cuối tệp functions.php
add_action('init', 'customRSS'); function customRSS(){ add_feed('feedname', 'customRSSFunc'); }
Đoạn mã trên kích hoạt hàm customRSS
, và bổ sung nguồn cấp dữ liệu mới. Hàm add_feed
có hai đối số, tên feed và hàm sử lý. Tên nguồn cấp dữ liệu sẽ chứa trong url nguồn cấp dữ liệu mới của bạn, VD yourdomain.com/feed/feedname và hàm `customRSSFunc` sẽ cung cấp nguồn dữ liệu.
Khi bạn đã khởi tạo nguồn cấp dữ liệu, bạn sẽ cần phải tạo hàm để thêm dữ liệu vào RSS. Sử dụng mã sau đây trong tệp functions.php.
function customRSSFunc(){ get_template_part('rss', 'feedname'); }
Đoạn mã trên có sử dụng hàm get_template_part
để liên kết đến một tệp template riêng biệt, tuy nhiên bạn cũng có thể đặt mã RSS trực tiếp vào hàm. Bằng cách sử dụng hàm get_template_part, chúng ta có thể giữ chức năng riêng biệt với bố cục HTML. Hàm get_template_part có hai đối số, slug và name, nó sẽ tìm một file có tên ở định dạng sau, bắt đầu với tệp chứa ở child theme (nếu không tìm thấy, nó sẽ chuyển sang slug , v.v.):
wp-content/themes/child/rss-feedname.php wp-content/themes/parent/rss-feedname.php wp-content/themes/child/rss.php wp-content/themes/parent/rss.php
Tiếp đến, bạn sẽ cần phải tạo một file template có tên `rss-feedname.php`. Đoạn mã dưới đây sẽ tạo ra dữ liệu XML cho nguồn cấp dữ liệu RSS. Lưu tệp này trong thư mục themes của bạn.
<?php /** * Template Name: Tùy chỉnh RSS - Feedname */ $postCount = 5; // The number of posts to show in the feed $posts = query_posts('showposts=' . $postCount); header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true); echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" <?php do_action('rss2_ns'); ?>> <channel> <title><?php bloginfo_rss('name'); ?> - Feed</title> <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" /> <link><?php bloginfo_rss('url') ?></link> <description><?php bloginfo_rss('description') ?></description> <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate> <language><?php echo get_option('rss_language'); ?></language> <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod> <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency> <?php do_action('rss2_head'); ?> <?php while(have_posts()) : the_post(); ?> <item> <title><?php the_title_rss(); ?></title> <link><?php the_permalink_rss(); ?></link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <dc:creator><?php the_author(); ?></dc:creator> <guid isPermaLink="false"><?php the_guid(); ?></guid> <description><![CDATA[<?php the_excerpt_rss() ?>]]></description> <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded> <?php rss_enclosure(); ?> <?php do_action('rss2_item'); ?> </item> <?php endwhile; ?> </channel> </rss>
Template này sẽ tạo nguồn RSS với thông tin đầy đủ của một bài viết. Biến postCount cho phép bạn kiểm soát số lượng bài đăng hiển thị trong nguồn dữ liệu của mình. Template có thể được sửa đổi theo yêu cầu để hiển thị bất kỳ thông tin nào bạn muốn (ví dụ: hình ảnh, bình luận, v.v.).
Hàm the_excerpt_rss
sẽ hiển thị nội dung của mỗi bài đăng và đối với các bài đăng không có đoạn trích, nó sẽ hiển thị 120 từ đầu tiên của nội dung bài đăng.
Cuối cùng, để hiển thị nguồn dữ liệu này, trước tiên bạn cần phải tạo lại đường dẫn URL. Cách dễ nhất để làm điều này là đăng nhập vào quản trị WordPress và nhấp vào Settings -> Permalinks. Sau đó nhấp vào Save Changes, WordPress sẽ viết lại quy tắc URL.
Bây giờ bạn có thể truy cập nguồn cấp dữ liệu mới của mình bởi URL yourdomain.com/feed/feedname, trong đó ‘feedname’ là tên nguồn dữ liệu bạn đã cung cấp trong hàm `add_feed` trước đó.
Sửa lỗi
Có một vài lỗi thường gặp với dữ liệu RSS. Vì RSS sử dụng cú pháp XML, là một ngôn ngữ nghiêm ngặt về cú pháp.
Lỗi 404 khi truy cập nguồn dữ liệu RSS !
Kiểm tra tên feed, hãy chắc chắn sử dụng tên chính xác trong URL của mình. Nó là tên mà bạn đã cung cấp trong hàm add_feed
Nếu bạn cung cấp đúng tên feed, hãy thử lưu lại permalinks của bạn để chắc chắn URL feed đã được viết lại.
Hoặc thêm code sau vào hàm customRSS mà chúng ta đã tạo trước đó. Thêm đoạn này ngay sau hàm add_feed.
global $wp_rewrite; $wp_rewrite->flush_rules();
Sau đó tải lại trang web. LƯU Ý: ngay sau đó bạn cần xóa code này vì một lần chạy là đủ để WordPress tạo lại quy tắc URL mới.
Sai cú pháp RSS
Bạn có thể kiểm tra cú pháp XML sử dụng W3C, các chi tiết về lỗi sẽ được cung cấp khi xác thực nguồn dữ liệu của bạn. Chỉnh sửa lại tệp template slug-name.php để giải quyết lỗi này.
Lỗi thẻ ngôn ngữ
Đây là phổ biến khi RSS chưa cấu hình ngôn ngữ. Để thực hiện việc này, bạn có thể thêm đoạn mã sau vào tệp functions.php, Để cập nhật tùy chọn ngôn ngữ.
function rssLanguage(){ update_option('rss_language', 'en'); } add_action('admin_init', 'rssLanguage');
Sau khi lưu tệp, hãy tải lại trang quản trị WordPress để mã này có hiệu lực. Sau đó, nhớ xóa đi vì đoạn code này chỉ cần chạy một lần.
Bạn cũng có thể thay đổi trực tiếp trong CSDL, nó là option `rss_language` trong bảng `wp_options`
Hy vọng bài viết này có thể giúp bạn tạo dữ liệu RSS tùy chỉnh trong WordPress. Nếu bạn có bất kỳ thắc mắc nào hãy để lại bình luận dưới bài viết này nhé.
Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype