主题使用“文章形式(Post Formats)”以某种形式和样式显示文章。“文章形式”功能提供了可用于支持该功能的所有主题的形式的标准化列表。主题可能不支持列表中的所有形式;在这种情况下,这是使用户知道的好形式。
主题即使通过插件也不能引入不在标准列表中的文章形式。这种标准化可确保主题之间的兼容性以及外部工具以一致的方式使用功能的方式。
简而言之,博主可以使用支持文章形式的主题,通过选择文章形式来更改文章的外观。
过去以Asides为例,创建了一个名为Asides的类别,并为其分配了文章,然后根据来自post_class()
或 in_category('asides')
样式规则显示不同的内容。
使用文章形式时,新方法允许主题添加对文章形式的支持(例如 add_theme_support('post-formats', array('aside'))
),然后可以在文章元数据框中选择文章形式来保存文章。可以使用函数 get_post_format($post->ID)
来确定格式,并且post_class()
还将创建用于纯CSS样式的“format-asides”类。
支持的文章形式
如果主题支持,则可以使用以下文章形式。
请注意,虽然实际的文章内容不会改变,但主题可以根据所选文章形式不同地显示文章。文章的显示方式完全取决于主题,但是以下是有关不同文章形式的典型用法的一些一般准则。
- aside -通常样式不带标题。类似于Facebook笔记更新。
- gallery-图片库。文章可能包含画廊简码,并带有图像附件。
- link –指向另一个站点的链接。主题可能希望使用文章内容中的第一个
<a href="">
标签作为该文章的外部链接。一种替代方法是,如果文章仅由网址组成,则将使用这个网址,而标题(post_title)将是附加到其锚点的名称。 - image –单个图像。文章中的第一个
<img />
标签可以视为图片。或者,如果文章仅由网址组成,则它将是图像网址,而文章的标题(post_title)将是图像的title
属性。 - quote –引用。可能将包含一个引用内容的blockquote。或者,引用可以只是内容,而源/作者是标题。
- status –简短的状态更新,类似于Twitter状态更新。
- video –单个视频。文章内容中的第一个
<video />
标签或对象/嵌入对象可以视为视频。或者,如果文章仅由网址组成,则将是视频网址。如果在博客上启用了视频支持(例如通过插件),则还可能包含视频作为文章的附件。 - audio –音频文件。可以用于播客。
- chat –聊天记录,如下所示:
John: foo
Mary: bar
John: foo 2
编写或编辑文章时,“标准”表示未指定文章形式。另外,如果指定了无效的文章形式,则默认情况下将应用“标准”(无格式)。
参考函数
主要函数
其他函数
添加主题支持
主题需要在functions.php文件中使用add_theme_support()
,通过传递如下形式数组来告诉WordPress该主题支持哪些文章形式:
function themename_post_formats_setup() {
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
}
add_action( 'after_setup_theme', 'themename_post_formats_setup' );
使用after_setup_theme
挂钩,以便在加载主题之后注册文章形式支持。
添加文章类型支持
文章类型需要在functions.php文件中使用add_post_type_support()
来告诉WordPress支持哪些文章形式:
function themename_custom_post_formats_setup() {
// 添加文章形式支持到文章类型 'page'
add_post_type_support( 'page', 'post-formats' );
// 添加文章形式支持到自定义文章类型 'my_custom_post_type'
add_post_type_support( 'my_custom_post_type', 'post-formats' );
}
add_action( 'init', 'themename_custom_post_formats_setup' );
应该将add_post_type_support
挂载到init
钩子上,因为自定义帖子类型可能尚未在after_setup_theme中注册。
使用文章形式
在主题中,使用get_post_format()
检查文章形式,并相应地更改其显示方式。请注意,采用默认形式的文章将返回false
值。或者,使用has_post_format()
条件标签:
if ( has_post_format( 'video' )) {
echo 'this is the video format';
}
建议的样式
另一种格式化方法是通过样式规则。主题应该在文章周围的包装器代码中使用post_class()
函数来添加动态样式类。文章形式将会使用“ format-foo”名称类似的方式添加额外的类。
例如,可以通过将其放在主题的样式表中来隐藏状态形式的文章中的标题:
.format-status .post-title {
display:none;
}
根据现代用法,每种形式都适合某种类型的“样式”。应用样式时,请牢记每种文章形式的预期用法。
例如,aside,链接( link )和状态( status )形式为简单、简短的形式。这些通常不会显示标题或作者信息。旁边可能包含一个或两个段落,而链接只是其中包含URL链接的句子。链接和旁链接都可能具有指向单个文章页面的链接(使用the_permalink()
),因此将允许发表评论,但是状态( status )形式很可能不会具有此类链接。
另一方面,图片形式通常只包含一个图片,带有或不带有标题/文字。音频/视频文章将是相同的,但是添加了音频/视频。这三个选项中的任何一个都可以使用插件或标准的嵌入来显示其内容。标题和作者身份也可能不会显示,因为内容可能是不言自明的。
引用形式特别适合于发布没有任何额外信息的简单引用。如果仅将引号放在文章内容中,并将引用的人的名字放在文章标题中,则可以对文章进行样式设置,以显示the_content()
本身,但可以重新设置为blockquote格式,然后使用the_title()
以显示引用人的姓名作为副标题。
在许多情况下,特别是聊天可能趋向于等距显示。通过在.format-chat
上进行一些样式设置,您可以使它使用等距字体显示文章的内容,也许在灰色背景div
或类似的文本内部,从而在聊天过程中将其视觉上区分开。
子主题中的文章形式
子主题继承父主题定义的文章形式。为子主题中的文章形式调用add_theme_support()
的优先级必须高于父主题的优先级,并且优先于现有列表,而不是添加到现有列表中。
调用 remove_theme_support('post-formats')
会将其全部删除。