东城网页设计:如何在WordPress中将RSS提要解析为内容

2019.05.27 东城网页设计

135

大多数人不知道的是,WordPress也很有能力从外部博客中提取RSS内容,并将其解析为在其众多模板文件中的一个中显示出来。这个功能可能不太为人所知,因为它并不像软件生产提要那样古老,而且已经建立起来了。仅从2.7版本起,将RSS提要解析为内容并将该信息包含到模板文件中的能力相对较新,其参数甚至在WordPress开发社区的更高级成员中也基本不为人所知。

幸运的是,这些参数很容易学习和定制,并且它们可以将一个简单的rss提要转化为一个很好的额外内容来源,并在已经繁忙的WordPress博客上进行讨论。

RSS提要不仅可以由WordPress解析,而且还可以分成列和选项卡。这使得提要实际上可以作为一些WordPress博客的主要内容来源,特别是那些认为自己只是外部内容的聚合者,而不是任何主题的独特新闻、评论或评论的制作人的博客。

将提要拆分成列主要可以在幕后使用高级PHP函数,它与WordPress自己的提要解析器一起工作。那些尝试这一壮举的人应该意识到,他们需要相当广泛的PHP知识才能完成这项任务。他们还需要了解WordPress循环工作原理,以及如何使用在循环中有效的每个变量来显示RSS内容。基本的XHTML知识和一些CSS技能将是一个伟大的东西,以及。

随着这些技能的完善并准备接受测试,是时候完成几个步骤,并将一个基本的RSS提要转换成一系列聚合内容列。这是如何做到的:

步骤1:利用内置的解析函数将Feed提取并将其XML转换为内容

解析RSS提要的WordPress函数称为“去取“职能。这是一个非常贴切的名称,当函数运行时,获取RSS提要,并将其内容带回博客。然后就变成了XML将内容转化为健壮的XHTML编码的数据库内容,这些内容可以使用典型的WordPress循环样式变量放置在页面上。对于那些不熟悉这个函数的人,外部RSS提要的获取函数如下所示:

include_once(ABSPATH . WPINC . '/feed.php');
if(function_exists('fetch_feed')) {
$feed = fetch_feed('http://website-of-content.com/content.rss'); // this is the external website's RSS feed URL
if (!is_wp_error($feed)) : $feed->init();
$feed->set_output_encoding('UTF-8'); // this is the encoding parameter, and can be left unchanged in almost every case
$feed->handle_content_type(); // this double-checks the encoding type
$feed->set_cache_duration(21600); // 21,600 seconds is six hours
$limit = $feed->get_item_quantity(18); // fetches the 18 most recent RSS feed stories
$items = $feed->get_items(0, $limit); // this sets the limit and array for parsing the feed
endif;
}

上面的大部分代码可以保持不变,因为不需要定制。然而,有些线路确实需要修改。要更改的最重要代码行实际上是通过站点的提要URL将外部RSS提要拖到数据库中的代码行。一个不正确或丢失的URL将导致所有类型的错误和明显的内容缺乏,所以一定要得到正确的信息。

需要自定义的第二条信息是可以从提要中解析的项的限制。在上面的例子中,这个限制是18。这将允许“切片“函数在本教程后面创建三个列,每个列包含六个条目。所有列在内容和长度上都是相同的,这是例程完美工作的必要条件。

一旦对这些项进行了满意的自定义,并且选择了允许内容长度相同的列的提要限制,就应该保存文件,然后继续教程的下一部分。下一步将确保在所有内容列中对提要项进行适当的划分和放置。

步骤2:为网站设计将内容划分为正确的列数

现在我们已经使用内置的WordPress“获取”了提要。功能这是专门为解析RSS内容而设计的,现在是将其切片和切成列的时候了。实际上,这就是完成此任务的PHP函数的名称:php_slice。这实际上不是一个随WordPress附带的函数。相反,它是一个原始PHP函数,它只是PHP 5的一部分。因为WordPress本身是一个PHP应用程序,而且由于PHP可以在其标准模板文件中广泛使用,所以很容易甚至建议将这个PHP函数直接放到模板文件中,在该文件中将提要显示给站点的读者。

下面是使用WordPress粘贴在三列RSS提要页面中的代码。热心的WordPress开发人员会注意到,有三个代码块,它们的性质几乎相同,它们是完成工作所必需的:

// This block of code creates the first column of six RSS feed items
$blocks = array_slice($items, 0, 6); // Items zero through six will be displayed here
foreach ($blocks as $block) {
echo $block->get_title();
echo $block->get_description();
}

// This block of code creates the second column of six RSS feed items
$blocks = array_slice($items, 6, 12); // Items seven through twelve are placed in the second column
foreach ($blocks as $block) {
echo $block->get_title();
echo $block->get_description();
}

// This block of code creates the third column of six RSS feed items
$blocks = array_slice($items, 12, 18); // Feed items thirteen through eighteen go in the third column
foreach ($blocks as $block) {
echo $block->get_title();
echo $block->get_description();
}

实际上,上面提到的所有代码都可以在粘贴之后不进行任何定制或更改。但是,每个代码块中都有一行代码需要更改,以确保内容的“片段”大小适当,并放置在WordPress模板文件中。这些行类似于下面的示例,只需使用第一个代码块中的一行:

$blocks = array_slice($items, 0, 6); // Items zero through six will be displayed here

这个$blocks变量实际上创建了内容块,因此它的名称非常简单。在上面的行中,变量负责创建块0到6,并将它们放在内容的第一列中。“零”块没有内容,但是在创建RSS内容的PHP片段时,它必须始终是第一个数字。第一到第六块将包含反映提要XML内容的实际新闻故事,它们将包含第一列。

第二个代码块显示了第二个六层,第三个块在RSS提要中显示了第十三层到第十八层,从而结束了这个过程。对于故事较少的设置,需要更改这些数字,以便在每一列中都有相同的内容分布。如果网站上需要四列、五列、六列甚至十列的内容,就可以创建更多的代码块,就像上面的三个。PHP切片函数很容易修改并引入任何RSS解析情况,只要所有内容保持不变-故事的数量必须被列数平均除以,并且在创建的每一列中都必须有相同数量的故事。

步骤3:使用WordPress循环变量创建RSS内容的友好显示

RSS解析函数创建可以使用典型WordPress循环变量显示和设计的故事和内容。但是,在本例中只有一个问题:这些变量必须有一个前缀,该前缀引用$block变量。这是为了让WordPress知道它正在设计哪些内容,以及它在页面上打印了哪些内容。然而,这是一个小问题,但是,当查看下面的标准日期变量示例时,它将是有意义的。将此变量放入模板以在列中显示解析的RSS内容时,如下所示:

<?php echo $block->get_date("m d Y"); ?>

很容易对吧?在创建XHTML设计以将这个提要内容呈现给最终用户时,每个WordPress循环变量也是如此。简单地将所有变量前缀为$block标签和a->元素,则信息将完美地打印到页面上。作为参考,下面是一个非常基本的示例,说明如何在页面上打印RSS提要内容时如何将循环变量带到表中:

<div class="rss-column-story">
<h3><?php echo $block->get_title(); ?></a></h3>
<p/>
<?php echo $block->get_date("m d Y"); ?>
<?php echo substr($block->get_description() ?>
<a href="<?php echo $block->get_permalink(); ?>">More...</a>
</div>

这是一个很好的方法来说明使用$block变量与标准循环变量组合在一起。继续自定义此模板代码,使其与网站当前的设计相匹配,然后保存模板文件本身。只有一段代码必须添加到文件中,才能完成整个例程,并确保它对最终用户是“故障安全”,即使远程网站不可用。

步骤4:添加一层防止外部网站故障的保护层

从外部RSS提要中提取内容的主要困难之一是,如果该外部网站碰巧经历停机,该网站将抛出许多错误。这是因为“FETCH”函数会一遍又一遍地尝试获取故事,即使这个过程相对来说是没有希望的-至少在短期内是如此。这将导致WordPress输出许多难看的解析错误,这意味着无法到达站点,并且在幕后发生了各种不好的事情。这些错误可能对网站管理员有用,但它们并不是最终用户需要面对的最好的东西。事实上,他们会把这些错误与网站的诚信和声誉联系起来,他们会去其他地方满足他们的需求。

在“去取“代码和”切片“代码,放置以下代码段以防止显示此类错误:

if ($limit == 0) {
echo 'News is currently not available due to server issues. Check back soon!';
} else {
SLICE CODE GOES HERE
}

这个片段的工作方式是将切片代码放入一个条件语句中,只有当RSS提要中有多个故事时,它才会显示它。如果服务器根本无法连接和拉下rss提要,它将创建一个零层rss提要。这反过来将导致错误消息的显示,提醒读者不可用的辛迪加内容。使用此代码时,不会显示任何难看的PHP错误。

享受频繁更新内容的好方法

拉下一个rss提要并将其分割成几个专栏,对于不活跃的博客来说是一个很好的方法,可以不断地向他们的读者介绍新的内容。由于PHP函数和WordPress循环变量的结合,这些故事的风格可以完美地融入到网站的设计中,给人的印象是即使员工人数少、活动水平低,网站也会变得更加活跃和专业。


最新案例

寒枫总监

来电咨询

18868949445

微信咨询

寒枫总监

TOP