Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Tài nguyên » Tạo dữ liệu RSS tùy chỉnh trong WordPress

Tạo dữ liệu RSS tùy chỉnh trong WordPress

Thứ Tư, 20/02/2019 by Hoàng Quách

Nội dung

  • 1 Sửa lỗi
    • 1.1 Lỗi 404 khi truy cập nguồn dữ liệu RSS !
    • 1.2 Sai cú pháp RSS
    • 1.3 Lỗi thẻ ngôn ngữ
  • shares
  • Facebook
  • 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
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Tài nguyên

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.