我不确定“数据整理”是否是一个真正的说法,但这就是我对我即将描述的内容的理解。
我和 Dave 正在考虑为 ShopTalk Show 进行一些重新设计。有点像重新粉刷。偶尔这样做总是好的。但这次我们想从内到外进行设计。围绕我们现有的数据进行设计听起来不太吸引人。我们希望使用更干净的数据。我们需要整理现有的数据,以便它能够打开更多设计可能性。
我们掉进了WordPress的经典陷阱
也就是…把所有东西都倒进默认的内容区域

我们使用了Markdown,我认为 这样做很聪明,但仍然是一堆相当无结构的内容。举个例子

如果每次内容的结构都完全不同(就像博客文章可能那样),那也没问题。但事实并非如此。每个节目都有相同的结构。
这不是WordPress的错
我们只是没有正确地组织数据。您可以在任何CMS中犯这样的错误。
公平地说,可能需要相当长的时间才能形成稳定的结构。当您不知道结构将是什么时,从第一天开始设置数据很困难。说到这里…
我们需要的结构
对于结构化数据而言,一期播客需要以下内容
- 剧集标题
- 剧集描述
- 剧集特色图片
- MP3
- 网址
- 播放时长
- 大小(字节)
- 节目主题列表,包含时间戳
- 链接列表
- 可选:嘉宾
- 嘉宾姓名
- 嘉宾网址
- 嘉宾Twitter
- 嘉宾简介
- 嘉宾照片
- 可选:广告商
- 广告商名称
- 广告商网址
- 广告商文字
- 广告商时间戳
- 可选:职位提及
- 公司
- 职位名称
- 职位网址
- 职位描述
- 可选:文字记录
但这仍然不完美
例如:我们将剧集编号作为标题的一部分,这意味着当我们需要单独使用该编号时,我们将在模板中进行字符串操作,这感觉有点笨拙。
另一个例子:嘉宾本身并不是一个程序化的结构。嘉宾不是具有ID的独立数据库记录。这意味着如果一个嘉宾出现在多个节目中,就会出现重复数据。此外,它并不能让我们非常轻松地“显示所有由Rebecca Murphey参与的节目”,而这是我们讨论过想要实现的功能。我们认为未来可能有一些方法可以通过编程来解决这个问题。
幸运的是,这种结构很容易在高级自定义字段中表达
一旦您知道需要什么,ACF 就能让您轻松地构建它并将其应用于您需要的任何类型的页面类型。
我知道其他CMS默认情况下鼓励这种结构。酷。我认为这很聪明。您应该为自己选择YourFavoriteCMS而感到自豪。
在ACF中,我们的“字段组”最终是这样的

我们需要“重复器”字段来处理诸如嘉宾之类的 数据,这些数据需要重复任意次数。这是ACF的PRO功能,这似乎是他们方面的一个天才之举。

开始数据整理
不幸的是,现在我们有了正确的结构,但这并不意味着所有旧数据都会立即到位。我们可以通过几种方法来解决这个问题…
我们可以按日期拆分节目页面的设计。如果是旧节目,则像往常一样输出内容。如果是新节目,则使用漂亮的数据格式。不过,这感觉比我们之前遇到的问题还要糟糕。
我们可以尝试通过编程来解决它。也许我们可以运行一些脚本来解析旧数据,对应该移植到新结构的内容进行智能猜测,并运行它。这绝对是一件非同寻常的事情。即使我们能够编写它,它也可能比手动移动数据花费更多时间。
或者…我们可以手动移动数据。所以这就是我们最终所做的。或者更确切地说,我们聘请了某人来帮我们移动数据。感谢 Max!Max Kohler 是我们的数据整理师。

手动移动看起来确实是最可行的方法。它本质上是数据录入工作,但需要一些思考和决策(因此称为“整理”),因此这是非常适合自己动手或找到一些需要额外工作时间的人来完成的工作。
使用干净且结构化的数据,设计变得容易得多
通过对所有数据进行清理,我能够以更加一致和结构化的方式在设计本身中输出它

最新的 ShopTalk Show 设计并非杰作,但现在所有这些结构性工作都已完成,我们应该能够在下一个设计中更加专注于美学,以及视觉设计的更多有趣部分。
嘿,Chris,
将内容分块始终是一件好事,但这样做的一个副作用是,默认情况下发送到播客应用程序的提要包含的信息更少。
可能值得研究一下如何通过模板调整将“时间跳转”和“链接”部分重新添加到RSS提要中?
ShopTalk提要的最佳部分是能够直接在播客应用程序中使用“时间跳转”链接跳转到剧集的各个部分(至少在Overcast中是这样)。
我猜人们与剧集内容交互的最常见方式之一是在他们的播客应用程序中,而不是在网站本身?也许可以称之为“优先设计提要”? :)
是的,这是一个不幸的副作用!
不过,它完全可以解决。例如,我将节目的描述放回如下
我在从functions.php内部运行Markdown解析器时遇到了一些麻烦,但我们最终会解决这个问题,并使提要恢复到以前的功能齐全的状态。
好主意!我相信越来越多的网站都在这样做,因为它们正在构建内容为API的CMS。
您可能可以使这更DRY。例如,您的一些嘉宾可能会再次出现,再次添加他们的信息可能很愚蠢。我必须包含杂志的作者(而不是作者)。因此,我设置了一个名为“作者”的CPT,并添加了类似于您的ACF字段。然后,我使用ACF的帖子对象将作者附加到相关的帖子。ACF还允许您将多个对象附加到一个帖子。因此,按照您定义的顺序将多个嘉宾附加到一个节目中应该不是问题。此外,使用CPT,每个作者都有他/她自己的页面,包括简介、社交信息等,以及他/她所有文章的查询列表。
是的,我在帖子中稍微提到了这一点。
我们也考虑过使用实际的WordPress用户作为用户,但最终没有这样做。
我一读你的开头段落,就想到,“他们应该使用ACF”。
我的惊讶可想而知!
如果你希望内容块有更多灵活性,也可以使用ACF的专业功能灵活内容。
我们正在使用它来让我们的客户选择他们想要的内容块类型。例如,文本、图片、嵌入、引用、两列等。这样,客户就可以控制在特定顺序中使用哪些块。
有助于分离所有不同的内容元素,并在前端真正完善设计部分。
Advanced Custom Fields是当之无愧的最佳WordPress插件。
很棒的东西。我一次又一次地发现自己使用ACF来简化相对复杂的布局。客户非常喜欢它设置完成后有多么简单。
如果您使用的是WordPress的默认搜索,请注意这会对您的搜索结果造成的影响。默认情况下,WP仅搜索文章标题和主要文章内容字段。
如果您还没有使用自定义搜索解决方案,您可能需要考虑使用类似searchwp.com的东西来包含您的acf字段并对结果进行加权。
不错 – 下次您需要稍微处理一下CPT时,可以看看https://de.wordpress.org/plugins/pods/ – 以及关系 – 如果您可以再次拥有相同的广告客户,所有数据都已存在于单独的CPT中,您只需要与之建立关系/链接,那不是很好吗?或者如果您有常客?或者创建您客人的列表以及他们在哪些节目中出现 – 或者从招聘板链接到节目;)
但是,是的,数据结构!重要:D 对您旅程的良好总结!
如上所述,将您的内容分解成元字段可能会降低RSS阅读器和搜索对该内容的可访问性。
在这种情况下,我喜欢隐藏内容编辑器,然后在创建或更新文章时,从文章元数据生成标记并将其保存在post_content中。这为您提供了两全其美的好处 – 后端结构化数据输入/存储,以及一个存储结果标记的单个字段。
巧妙。想看看一个例子!