介绍
RSS (Rich Site Summary,简称 RSS) 是最初由 Dave Winer 开发的一种“内容分发”技术,主要用于新闻、博客等各种页面的内容聚合与推送。WordPress 提供了默认的 RSS 包含最近发布的文章,但如果需要根据需求定制 RSS 源,则需要对其进行扩展。
为什么要扩展 RSS Feed?
WordPress 默认提供的 RSS 只包含文章的标题、作者、发布时间和文章摘要等信息,但是在有些情况下,我们需要文章的更多信息,例如发布作者的网站链接、文章中附带图片的不同尺寸等,这些信息都可以通过在函数文件中添加一些额外的代码来实现。
如何扩展 RSS Feed?
使用 add_action() 函数添加新的节点和元素
在 WordPress 中,可以使用 add_action() 函数在 RSS feed 中添加新的节点和元素。例如,以下代码可以添加文章缩略图元素到 feed 中:
function add_thumbnail_to_rss() {
global $post;
if ( has_post_thumbnail( $post->ID ) ){
$thumbnail = get_the_post_thumbnail( $post->ID, 'large' );
echo $thumbnail;
}
}
add_action( 'rss2_item', 'add_thumbnail_to_rss' );
该代码将会在添加文章缩略图到 RSS 的同时,确保只有文章中有图像才会出现。需要注意的是,此方法只适用于 RSS 2.0 版本,但是最新的 RSS 标准是 2.0,所以没有太大的问题。
使用 SimplePie 类添加内容
SimplePie 是用于解析和输出 RSS feed 的 PHP 类库,可以用来添加内容或修改内容。SimplePie 可以用来轻松地解决 RSS feed 扩展中最常见的问题。下面的代码演示如何使用 SimplePie 类获取文章标签并将其添加到 RSS Feed 中:
function add_tags_to_rss() {
global $wp_query;
$rss = new SimplePie();
$rss->set_feed_url( get_bloginfo( 'rss2_url' ) );
$rss->init();
$rss->handle_content_type();
$wp_query->is_feed = true;
$wp_query->feed_image = esc_url( $rss->get_image_url() );
$wp_query->feed_title = get_bloginfo( 'name' ) . ' - Tagged ' . single_tag_title( '', false );
$wp_query->feed_type = $rss->get_type();
$wp_query->posts_per_rss = get_option( 'posts_per_rss' );
header( 'Content-Type: '. feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true );
?>
have_items() ): ?>
the_item(); ?>
]]>
]]>
]]>
get_item_pubdate('Y-m-d H:i:s'); ?>
]]>
get_item_tags( '', 'category' ) as $category ) : ?>
]]>
enable_order_by_date) : ?>
get_item_tags('', 'ordering_date', true ); ?>
get_item_tags('', 'media:content') ) : ?>
get_item_tags('', 'media:content'); ?>
type=""
medium=""
height=""
width=""
/>
exit;
}
add_action( 'do_feed_tag', 'add_tags_to_rss', 10, 1 );
如您所见,对 SimplePie 的初始化和操作过程都包含在 add_tags_to_rss() 函数中。此方法可以在添加任何信息和元素到 RSS feed 中时使用。
结论
在本文中,我们了解了 RSS 以及如何通过添加新的节点和元素或者使用 SimplePie 来扩展 default WordPress RSS Feeds,并且了解到 SimplePie 是解决造成 RSS 扩展最常见问题的绝佳 PHP 类库。为读者提供额外的新闻、文章和内容元素,是在增强互联网在线体验方面发挥有助于的行之有效的办法,希望这篇文章对您有所帮助。