如何完全掌控WordPress的RSS

如果你希望你的RSS订阅源中的每篇文章显示不同的文本内容怎么办呢? 如果你希望某篇文章在RSS feed里显示不同的标题该怎么办呢?如果要在RSS feeds 里显示一个特定的自定义字段呢? 这就是我们这篇文章的目的,将告诉大家如何在WordPress RSS Feeds 里添加任何类型的内容。这个方法可以让你完全控制你的WordPress RSS Feeds,以任何你想要的方式输出内容。

如果你希望你的RSS订阅源中的每篇文章显示不同的文本内容怎么办呢? 如果你希望某篇文章在RSS feed里显示不同的标题该怎么办呢? 如果要在RSS feeds 里显示一个特定的自定义字段呢? 这就是我们这篇文章的目的,将告诉大家如何在WordPress RSS Feeds 里添加任何类型的内容。这个方法可以让你完全控制你的WordPress RSS Feeds,以任何你想要的方式输出内容。

注意: 本方法不适合初学者。需要熟悉functions.php文件的编辑、懂php知识的用户才可以试试。初级用户最好还是使用前面提到过的插件,或者咨询更专业的人士。

1. WordPress RSS页脚添加自定义字段

第一个例子我们将教大家如何在WordPress RSS Feed中使用自定义字段来显示特定文本/对象。使用本方法,你可以让每篇文章显示不同的文本、广告、图片等。首先打开你的 functions.php 文件,然后将下面的代码粘贴到php tags:

function wpbeginner_postrss($content) {
global $wp_query;
$postid = $wp_query->post->ID;
$coolcustom = get_post_meta($postid, 'coolcustom', true);
if(is_feed()) {
if($coolcustom !== '') {
$content = $content."<br /><br /><div>".$coolcustom."</div>\n";
}
else {
$content = $content;
}
}
return $content;
}
add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');

大家可能会问这段代码是如何运作的呢?下面就来解释一下,在这里,我们首先创建了一个叫做 wpbeginner_postrss 的函数,这个函数用来运行global wp_query 以搜索每篇文章确定是否有定义一个叫做“coolcustom” 的自定义字段。如果Cool Custom 这个字段有被定义,那么就会在文章内容的后面显示数值。反之,如果没有这么一个自定义字段,那么默认函数将仅显示文章内容而没有其他任何东西。我们使用变 量$content来显示内容。使用 (is_feed)函数,给文章内容添加自定义文本或其他内容, 你可以通过第二个filter看到。但是由于我们使用了if(is_feed)函数,这些内容只会在 RSS Feeds里显示。 这样做可以避免兼容性问题。

有些人可能会说,你不就是使用一个函数来代替RSS footer 插件吗?是的,我们的确在文章的页脚添加了代码,但是通过这个方法在每篇文章RSS页脚显示的文本并不是都一样的,这就是我们的区别。因为你可以通过自定 义字段给每篇文章指定不同的文本。这个方法对于有不同类型文章的博客作者来说,将会非常方便。

2. RSS中的文章题目添加更多内容

你的博客有客串文章、赞助文章、评论文章吗? 如果有,那么你将会发现这个方法非常实用。一些博客作者可能想给不同类型的文章以不同的自定义风格显示,这样用户就可以将它们区别开来了。 但是这些文章一旦进入阅读器,所有的样式都消失了。这时候,这招就显得非常有用了。这里我们将可以给标题前面或者后面添加任何文本。

例如,如果你的标题是 “Commercial WordPress Theme – StudioPress” 是一篇赞助文章,那么你可以将它改成 “Sponsored Post: Commercial WordPress Theme – StudioPress”。同样地,要是如果有人给你写了一篇客串文章,你也可以这么做。

首先打开你的functions.php文件并添加下面的代码:

function wpbeginner_titlerss($content) {
global $wp_query;
$postid = $wp_query->post->ID;
$gpost = get_post_meta($postid, 'guest_post', true);
$spost = get_post_meta($postid, 'sponsored_post', true);
if($gpost !== '') {
$content = 'Guest Post: '.$content;
}
elseif ($spost !== ''){
$content = 'Sponsored Post: '.$content;
}
else {
$content = $content;
}
return $content;
}
add_filter('the_title_rss', 'wpbeginner_titlerss');

代码解释:

我们使用的是一个叫做wpbeginner_titlerss 的函数,该函数运行 global wp_query以搜索每篇文章是否存在 $gpost 或 $spost。 这两个元素主要是用于查找两个特定的自定义字段“guest_post” 或“sponsored_post”。如果这些自定义字段被添加了一个值,那么就会在文本中添加代码。否则,你只会看到正常的标题。第一个代码是寻 找$gpos值是否为真, 如果这个值不为真,那么$spost是否为真。如果那个也没有定义,那么就显示正常的内容。但是如果两个中有一个值为真,那么它就会显示你在此指定的文 本。我们使用$content 字符串显示文章标题。

这么做只是在标题中显示自定义字段,你是否想在每篇标题那显示分类名称呢?那么,你只要在functions.php文件粘贴下面的代码即可:

function wpbeginner_cattitlerss($content) {
$postcat = "";
foreach((get_the_category()) as $cat) {
$postcat .= ' ('.$cat->cat_name . ')';
}
$content = $content.$postcat;
return $content;
}
add_filter('the_title_rss', 'wpbeginner_cattitlerss');

代码解释: 我们使用wpbgeinner_cattitlerss 函数获取每篇文章的分类ID,然后在标题旁边显示分类。因此,如果原来的标题是 “Get Contact Form 7″,那么,现在它将变成“Get Contact Form 7 [Plugins]“。 你会发现这段代码里面没有if then 变量。我们使用 $content 作为主要标题, $postcat变量来定义分类名称。

3. RSS中所有文章添加同样的文本

如果你只是想要给所有的文章添加同样的文本,那么你也可以使用前面的RSS Footer 插件,因为它更简单方便。如果你想要自己添加代码也可以。打开你的functions.php 文件并添加下面的代码:

function wpbeginner_postrss($content) {
if(is_feed()){
$content = 'This post was written by Syed Balkhi '.$content.'Check out WPBeginner';
}
return $content;
}
add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');

代码解释: 我们调用了一个叫做wpbeginner_postrss 的函数,给每篇文章在宣布本篇文章的作者是XXX的前面添加一段内容,然后退出WPBeginner。 同样地,由于我们添加了函数 if(is_feed), 因此只会在 RSS Feeds中显示这段内容。

如果你想在RSS中的某些文章出售广告,添加自定义的 FTC指南或者想进一步控制你的RSS源的话,本篇文章的方法将会非常有帮助。

来源: 本方法我们借助了Joost的RSS Footer 插件做了参考。RSS标题部分来自于一个法国的教程网站 另外,我们自己添加了一些变量并赋予每个自定义字段成为自定义标题的能力。

原文:How to Add Content and Completely Manipulate Your WordPress RSS Feeds

订阅评论
提醒
guest的头像

1 评论
内联反馈
查看所有评论
1
0
希望看到您的想法,请您发表评论x