新的代码片段 Feed 和使用方法

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

现在有一个新的仅包含代码片段的 Feed!我认为它将始终保持独立的 Feed,而不是成为主 Feed 的一部分。主要是因为我希望代码片段的数量会越来越多,并且希望会有很多条目,我认为这会让常规文章 Feed 不堪重负。获取它

代码片段 Feed

让它工作起来有点像一段旅程,所以我想在这里记录一下!

代码片段是 WordPress 页面

每个单独的代码片段页面都是一个 WordPress 页面。这样做有几个原因

  • 我喜欢页面的层次结构系统:/snippets/css/individual-snippet
  • 我可以从层次结构中创建动态导航
  • 默认情况下,页面不属于 RSS Feed

所以我很喜欢页面不是主 RSS Feed 的一部分,但我也想创建一个仅供它们使用的 RSS Feed。当我开始时,我不知道该怎么做。

自定义 Feed

您可能刚刚注意到,本周我更新了 视频屏幕录制 Feed 的工作方式。对于这个新的代码片段 Feed 和那个 Feed,我都在使用一种对我来说全新的技术,Jeff Starr 在 Digging Into WordPress 上发布了该技术: 简单的自定义 Feed

WordPress 使创建自定义页面模板变得很容易。只需在您的主题中启动一个像这样的文件

<?php 
/* 
Template Name: RSS Snippets
*/
?>

之后,您几乎可以在这里做任何您想做的事情。通常您会运行一个循环并输出页面的标题内容以及所有这些内容,但您不必这样做。在这种情况下,我们将做一些非常不同的事情。我们将创建一个有效的 RSS Feed。但首先要进行一些准备。

问题/计划

这里的目标是创建一个 Feed,该 Feed由按日期排列的单个代码片段组成,最新的排在最前面。问题是没有很好的现成的 WordPress 查询可以完成这项工作。我们可以query_posts对于页面,这不是问题。我们甚至可以query_posts对于特定页面的子页面,这将很有帮助。问题是我们只能深入一层。

$args = array(
	'showposts' => 5,
	'post_type'  => 'page',
	'post_status' => 'publish',
	'post_parent' => '3222',   // snippets page ID
);

$posts = query_posts($args);

运行这样的查询只会返回代码片段的类别页面,这并没有什么帮助,我们需要深入一层并获取子页面的子页面,同时排除中间层。注意:我不会在这里包含整个 RSS Feed 模板,因为它很大很长,您可以 从这里获取它

首先,我尝试将数组传递给 post_parent,并为其提供每个类别页面的 ID。这不起作用,因为这对query_posts来说是一个无效的参数。所以计划变成我们需要为每个类别创建单独的 Feed。我们将给post_parent 参数类别而不是代码片段页面的 ID 值。

$args = array(
	'showposts' => 5,
	'post_type'  => 'page',
	'post_status' => 'publish',
	'post_parent' => '3247'   // individual snippet category
);

但是……有七个不同的代码片段类别。将这些值硬编码到此页面模板中有点蠢。这意味着我必须创建七个不同的页面模板,它们之间只有一个微不足道的区别。这从来不是一件好事。相反,让我们创建一个模板,仅通过自定义字段传递该类别页面的值

the_post();

$id = get_post_meta($post->ID, 'parent_page_feed_id', true);

$args = array(
	'showposts' => 5,
	'post_type'  => 'page',
	'post_status' => 'publish',
	'post_parent' => $id,
);

现在我们可以非常轻松地发布每个类别 Feed 的新页面

将它们缝合在一起

现在有七个 RSS Feed,每个 Feed 对应一个代码片段。这很酷,但不是仅仅拥有代码片段 Feed 的最终目标。它们需要被缝合在一起并按发布时间排序。这种事情在 Yahoo Pipes 中非常容易做到。

烧掉它

还有 其他可用的 Feed 缝合服务,但选择 Yahoo 的主要原因之一是我相信它会存在一段时间并且可靠。(我并不是说其他服务不可靠,只是其中一件事……)我可以直接提供 Pipes RSS Feed,但是

  1. 它不是一个非常干净的 URL
  2. 我不会获得任何统计数据
  3. 如果 Yahoo Pipes 停止运行,我就完蛋了

因此,像往常一样,我烧掉了 Feed。这会生成一个漂亮的 URL(http://feeds.feedburner.com/CSS-TricksSnippets/),提供给我统计数据,并且如果 Yahoo Pipes 停止运行或出现问题,我可以将 Feed 的源重定向到不同的 Feed 缝合器。如果 FeedBurner 停止运行?上帝保佑我们所有人。