现在有一个新的仅包含代码片段的 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,但是
- 它不是一个非常干净的 URL
- 我不会获得任何统计数据
- 如果 Yahoo Pipes 停止运行,我就完蛋了
因此,像往常一样,我烧掉了 Feed。这会生成一个漂亮的 URL(http://feeds.feedburner.com/CSS-TricksSnippets/),提供给我统计数据,并且如果 Yahoo Pipes 停止运行或出现问题,我可以将 Feed 的源重定向到不同的 Feed 缝合器。如果 FeedBurner 停止运行?上帝保佑我们所有人。
嗯……这可能派上用场!谢谢,伙计。
我希望有针对各个类别的 Feed……
你真是太棒了!谢谢!
wp 中的 wp_list_pages 函数具有“depth”参数。我们不能使用它和循环的组合来完成这项工作吗?
您无法获取 wp_list_pages 的内容,只能获取标题。
而且您无法使用 query_posts 获取深度。
双重打击。
嗯,我希望发布的代码片段的质量不会一直那么低。当我查看一些最近的代码片段时,我看到的几乎都是原生的 php 函数描述,例如“如何将字符串转换为数组”(explode)。我认为这不太有用,因为每个使用 php 开发的人都应该知道这些东西。
在这种情况下,David,在这里提交一个! :D
——
TeMc
我已经提交了 11 个代码片段,不想让 Chris 变穷;)。
David 是当前代码片段提交比赛的获胜者。=)
如果其中很多对您没有用,我表示歉意,但它们具有广泛的复杂性和多样性,并且初学者风格的代码片段绝对对许多人有用。仅仅因为它们面向初学者,并不意味着它们“质量低劣”
@Chris
对我个人来说,“代码片段”这个词意味着已经完成了一些工作来修改/改进现有的函数,以某种方式创造新的益处。如果我想知道哪个 php 函数涵盖了哪些功能,我更喜欢文档。尽管如此,大多数代码片段对初学者和高级程序员都非常有用——我只是担心质量正在下降。
有人看到我的猎刀了吗?
不,真的,你看到它了吗?
别担心,Richard!我找到了。
哈哈。这只是对新期待已久(不是真的)的功能的测试,当您发表评论时,可以通过电子邮件订阅新评论。
就这样。
对未来绝对有用。
非常感谢 :-)
已订阅,希望我在 Google 阅读器中不会过载。我一直在努力跟上。 :)
刚刚订阅了这个。但只是希望我能抽出时间来跟进。
另一个被互联网信息淹没的极客。
感谢您的帖子。
我只是想补充一点,“per say”应该写成“per se”。 :)
(维基百科中的 Per se)
Chris,自从 10 号以来,我还没有看到 CSS Snippets 的更新。
没有新内容,还是我这边的问题?我在代码片段发布当天提交了一个,我觉得它相当不错 D
知道如何在 FeedBurner Feed 中显示帖子的作者吗?现在它只显示发布日期。
Chris,这太棒了!能让评论代码片段的部分/行更容易的一件事就是行号。
此外,“添加到 Coda”的东西对 Windows 用户来说很烦人(仍然有一些……)。
完美……我将深入研究所有 PHP 和 HTACCESS 代码片段!
这是一个很棒的想法 –
为了那些倾向于太晚发现此类主题的人:)
有没有办法创建 Feed 以获取条目,例如,我现在订阅了,它只显示 CSS Feed 的 5 个条目
但是如果我查看代码片段页面,则还有更多内容 – 因此,有没有办法回溯日期,以便我可以在我的 RSS 应用程序中获取所有代码片段
无论如何,这篇文章和这个想法都很完美,感谢这些酷炫的功能