为本周的热门帖子创建一个列表样式的帖子?

时间:2019-05-08 作者:jbwharris

我一直在寻找一种可以自动创建每周热门博客帖子的方法。例如,每周一创建一个帖子,列出过去7天中最受欢迎的帖子。而且它可能需要能够限制时间范围,所以假设这是一篇流量最大的旧帖子,我只想突出显示过去7天内发布的帖子。

现在,在寻找这样的插件时,我似乎只能找到具有这种功能的小部件插件。有没有一种工具可以做到这一点?或者我需要创建一个函数来执行类似的操作吗?我所看到的大多数代码都是关于创建一个动态页面,该页面将以所有时间的内容为特征,而我所要做的就是从给定的一周中获取最流行内容的快照。

1 个回复
SO网友:Stephan Samuel

您的目标是用最新内容创建一篇新帖子,还是列出包含最新内容的现有帖子?一般来说,后者更适合WP的正常工作。

Creating New Posts

这是可以做到的,但你要求的是一些复杂性。假设您可以将多篇帖子中的内容粘在一起,那么您将创建包含旧内容副本的新内容。

假设你可以把帖子粘在一起,这可能很难。考虑一下元数据。假设你的帖子A是绿色的,帖子B是红色的,你会把帖子A+B放在哪一类,绿色还是红色?也可能存在内容问题。您可能也没有使用类别(并且您的标记可能是不同的),因此这可能不是您的问题。

当你创建A+B时,你会这样创建:“A+B作为A存在于特定的时间,作为B存在于那个时间。”管理内容更改可能会变得困难。您还创建了一个没有来自a或B的评论的新帖子。再一次,对于您的设置来说,这可能不是问题。您提到了快照,所以您可能已经仔细考虑过了。

如果这就是你想要做的,你可能需要写一些东西来以你想要的方式处理它。话虽如此,WP已经存在很长时间了,一些研究可能会找到一个做类似事情的插件。它甚至可能非常相似,以至于您对结果感到满意。否则,编写这篇文章并不复杂,最佳实践可能是将其封装在插件中。

Listing Existing Posts

这可能是更“WordPress方式”的做法。这经常用于新闻稿和提要(如RSS)。一些很好的方法:

  • A newsletter plugin 有短代码的可能会直接为您处理此问题。在您想要使用内容的页面上放置快捷码(或者您只是想写一份新闻稿)
  • Themes 有时会内置这种功能。默认WP首页与此类似。拆分子主题并添加基于的页面模板archive.php 如果您不习惯编写WP代码,那么使用过滤器是一件相对容易的事情
  • Core functions 允许通过过滤器进行一些自定义。如果不编写代码,您可能无法完成很多工作。查看上的文档Customizing Feeds 以及pre_get_posts action. 对于前者(使用提要),您可能需要添加一些显示RSS提要的内容(短代码、小部件等),以引用您的自定义提要。对于后者,如果满足某些条件,您可能希望挂接到操作并修改页面查询,例如如果您位于要显示最近帖子的页面上

    Filtering/Sorting By Traffic

    这是一个单独的问题,答案取决于您如何衡量流量。使用谷歌分析(Google Analytics)之类的工具是很常见的,在这种情况下,你必须附加到这些数据,以找出哪些帖子更受欢迎。我编写了从托管的统计编译器(如AW Stats或Modlogan)读取的代码,因此这是可能的,尽管并不简单。您可能还使用了其他一些跟踪方法。

    在您所做的工作中,您将运行一个帖子查询,以找出哪些帖子是您想要使用的。这可能会给你一个WP_Post 对象。按日期筛选很容易(有post_date 字段和apost_modified 字段)。由于您尝试订购的内容(流量)不在同一个表中,因此您可能希望通过post ID或post_name, 并对结果列表(数组)重新排序。看见Sorting Arrays 在PHP文档中。

    请记住,如果您的数据不是来自单个查询(就像您关联流量数据),那么过滤基本上就是排序和截断。也就是说,选择所有可能的相关帖子(可能按日期),根据流量对其进行排序,然后根据您想要的记录数将列表删除。从性能的角度来看,这并不是最便宜的过程,但如果每天或每周执行一次,则可以缓存结果,应该可以。

    更新日期:Creating A Snapshot

    如果尝试创建快照,则会遇到两个问题:

    何时(或如何)创建快照?有一个cron WP中的API,最近刚刚更新。对于许多用例来说,这可能已经足够了。听起来这可能就是你所需要的wp_options 表或自定义帖子类型。再次公布结果可能更加复杂

  • 为什么要创建快照?如果出于性能原因,现有的缓存解决方案(或其他类似的解决方案)可能会更易于设置和管理。如果是为了审计,您最好使用一些审计解决方案,或者只使用WP中已有的内容审批。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。