介绍 #
Post Formats是3.1 版引入的主题功能。帖子格式是一条元信息,主题可以使用它来自定义其帖子的呈现方式。帖子格式功能提供了可用于支持该功能的所有主题的标准化格式列表。主题不需要支持列表中的每种格式。主题甚至插件都无法引入新格式。此列表的标准化提供了众多主题之间的兼容性,并为外部博客工具以一致的方式访问此功能提供了途径。
简而言之,使用支持帖子格式的主题,博主可以通过从单选按钮列表中选择帖子格式来更改每篇帖子的外观。
以Asides为例,过去创建了一个名为 Asides 的类别,并将帖子分配给该类别,然后根据post_class()或in_category(‘asides’)的样式规则以不同方式显示。使用Post Formats,新方法允许主题添加对 Post Format 的支持(例如add_theme_support(‘post-formats’, array(‘aside’))),然后可以在 Publish meta 框中选择 post 格式时保存帖子。可以使用get_post_format($post->ID)的函数调用来确定格式,并且 post_class()还将创建“format-asides”类,用于纯 CSS 样式。
支持的格式 #
如果主题支持它们,则以下帖子格式可供用户选择。
请注意,虽然实际的帖子内容条目不会更改,但主题可以使用此用户选择根据所选格式以不同方式显示帖子。例如,主题可以不显示“状态”帖子的标题。事物的显示方式完全取决于主题,但这里有一些一般准则。
- 一边——通常没有标题。类似于 Facebook 笔记更新。
- 画廊– 图片画廊。帖子可能会包含一个画廊简码,并且会有图片附件。
- 链接——指向另一个站点的链接。主题可能希望使用帖子内容中的第一个 <a href=””> 标记作为该帖子的外部链接。另一种方法可能是,如果帖子仅包含一个 URL,那么它将是 URL,而标题 (post_title) 将是附加到它的锚点的名称。
- 图像– 单个图像。帖子中的第一个 <img /> 标签可以被认为是图像。或者,如果帖子仅包含一个 URL,则该 URL 将是图像 URL,并且帖子的标题 (post_title) 将是图像的标题属性。
- 报价– 报价。可能会包含一个包含引用内容的块引用。或者,引用可能只是内容,来源/作者是标题。
- status – 一个简短的状态更新,类似于 Twitter 状态更新。
- 视频– 单个视频或视频播放列表。帖子内容中的第一个 <video /> 标签或对象/嵌入可被视为视频。或者,如果帖子仅包含一个 URL,那将是视频 URL。如果博客上启用了视频支持(例如通过插件),也可以将视频作为帖子的附件包含在内。
- 音频– 音频文件或播放列表。可用于播客。
- 聊天– 聊天记录,如下所示:
约翰:富 玛丽:酒吧 约翰:foo 2
注意:在撰写或编辑帖子时,标准用于指定未指定帖子格式。此外,如果指定的格式无效,则将使用标准(无格式)。
功能参考 #
主要函数 set_post_format() get_post_format() has_post_format() | 其他函数 get_post_format_link() get_post_format_string() |
添加主题支持 #
主题需要在functions.php文件中使用add_theme_support()来告诉 WordPress 通过传递格式数组来支持哪些帖子格式,如下所示:
add_theme_support('post-formats', array('aside', 'gallery'));
请注意,您必须在调用init钩子之前调用它!after_setup_theme钩子是一个很好的钩子。
添加帖子类型支持 #
Post Types 需要在functions.php文件中使用add_post_type_support()来告诉 WordPress 支持哪些帖子格式:
// 将后期格式添加到 post_type 'page' add_post_type_support('page', 'post-formats');
下一个示例注册自定义帖子类型“my_custom_post_type”,并添加帖子格式。
// 注册自定义帖子类型'my_custom_post_type' add_action('init', 'create_my_post_type'); 功能 create_my_post_type() { register_post_type('my_custom_post_type', 大批( 'labels' => array('name' => __('Products')), '公共' => 真 ) ); } //将后期格式添加到 post_type 'my_custom_post_type' add_post_type_support('my_custom_post_type', 'post-formats');
或者在函数register_post_type()中,在 ‘supports’ 参数数组中添加 ‘post-formats’。下一个例子等价于上面一个。
// 使用 'supports' 参数注册自定义帖子类型 'my_custom_post_type' add_action('init', 'create_my_post_type'); 功能 create_my_post_type() { register_post_type('my_custom_post_type', 大批( 'labels' => array('name' => __('Products')), '公共' => 真的, 'supports' => array('title', 'editor', 'post-formats') ) ); }
使用格式 #
在主题中,使用get_post_format()来检查帖子的格式,并相应地更改其呈现方式。请注意,默认格式的帖子将返回 FALSE 值。或者使用has_post_format() 条件标签:
if ( has_post_format( 'video' )) { echo '这是视频格式'; }
使用格式的另一种方法是通过样式规则。主题应该在帖子周围的包装代码中使用post_class()函数来添加动态样式类。帖子格式将导致以这种方式添加额外的类,使用“format-foo”名称。
例如,可以通过将其放入主题的样式表中来隐藏状态格式帖子的帖子标题:
.format-status .post-title { 显示:无; }
建议的样式 #
尽管您可以对格式进行样式设置和设计,以任何您认为合适的方式显示,但每种格式都适用于特定类型的“样式”,如现代用法所决定的那样。最好记住每种格式的预期用途,因为这将使它们易于被读者识别为特定类型的事物。
例如,旁白、链接和状态格式通常不会显示标题或作者信息。它们简单、简短、次要。旁白可能包含一两段,而链接可能只是一个句子,其中包含指向某个 URL 的链接。链接和旁边都可能有一个指向单个帖子页面的链接(使用the_permalink()),因此允许评论,但状态格式很可能没有这样的链接。
另一方面,图片帖子通常只包含一张图片,带有或不带有标题/文本。音频/视频帖子将是相同的,但添加了音频/视频。这三个中的任何一个都可以使用插件或标准嵌入来显示其内容。也可能不会为他们显示标题和作者身份,因为内容可能是不言自明的。
报价格式特别适合发布没有额外信息的人的简单报价。如果您要将引用单独放入帖子内容中,并将引用的人的姓名放入帖子的标题中,那么您可以设置帖子的样式以显示the_content()本身但重新设置为块引用格式,并使用the_title()将引用的人的姓名显示为署名。
在许多情况下,特别是聊天可能会倾向于等宽类型的显示。通过 .format-chat 上的一些样式,您可以使其使用等宽字体显示帖子的内容,可能在灰色背景 div 或类似的内部,从而在视觉上将其区分为聊天会话。
子主题中的格式 #
子主题继承父主题定义的帖子格式。为子主题中的帖子格式调用add_theme_support()的优先级必须高于父主题的优先级,并且将覆盖现有列表,而不是添加到它。
add_action('after_setup_theme', 'childtheme_formats', 11); 函数 childtheme_formats(){ add_theme_support('post-formats', array('aside', 'gallery', 'link')); }
调用remove_theme_support(‘post-formats’)会将其全部删除。
向后兼容性 #
如果您的插件或主题需要与早期版本的 WordPress 兼容,您需要将名为 post-format-$format 的术语添加到“post_format”分类中。例如,
wp_insert_term('post-format-aside', 'post_format');
您还必须使用register_taxonomy()注册 post_format 分类法。
源文件 #
外部资源 #
- Narga使用 WordPress 自定义帖子格式设计聊天记录
- 帖子类型和格式以及分类法,哦,我的!奥托
- 关于Andrew Nacin 的标准化帖子格式
- Mark Jaquith 的帖子格式与帖子类型
- 更智能的帖子格式?杜格尔·坎贝尔
- WordPress 主题支持生成器