文章形式是3.1版本引入的主题特性。文章形式是一块元信息,可以使用不同的主题样式来定制文章。文章形式特性列出主题中所有可用的标准化的形式。主题不需要支持列表上的每一个形式。新形式不能被引入到主题甚至插件。这个列表的标准化为众多主题之间提供了兼容性,外部博客工具可以使用一致的方式来访问这个功能。
简而言之,主题支持文章形式,博客可以通过一个单选按钮列表来改变每一篇文章的样式。
既定的文章形式
下面的文章形式可供用户选择,如果主题支持它们。
- 旁白 / aside - 典型的没有标题的样式。类似于Facebook注意更新。
- 画廊 / 相册 / gallery - 画廊或相册的图片。文章可能会包含一个画廊的短码并包含图片附件。
- 链接 / link - 一个链接到另一个站点。主题可能希望使用文章内容中的第一个<a href="">标记的地址作为外部链接。一种替代方法可能是如果帖子只包含一个URL,然后URL和标题(post_title)将作为文章标题。
- 图像 / image - 单一的图片。文章中的第一个<img />标签将是被考虑的图片。如果文章中只包含一个URL,那个将作为图片URL,并且文章的标题将作为这个图片的标题属性。
- 引用 / quote - 一段引用,可能包含一个块状引用。另外也可能仅仅只是内容和包含来源/作者的标题。
- 状态 / status - 一个短的状态更新,类似于Twitter状态更新。
- 视频 / video - 一个单一的视频,被认为是文章中的第一个<video />标签或 object/embed。另外,如果文章中只有一个URL,那个将被认为是视频的URL。如果博客支持视频,还可能是文章的视频附件,(比如通过插件)。
- 音频 / audio - 音频文件,可用于播客。
- 聊天 / chat - 聊天记录,就像这样:
John: foo Mary: bar John: foo 2
注意:在编写或编辑帖子时,标准是默认的文章形式,如果指定的文章形似无效,则会自动使用标准(无形式)。
添加主题支持
主题需要在 functions.php 文件中使用 add_theme_support() 来告诉 WordPress 使用哪几种文章形式:
<?php
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
注意你最好在 init 钩子之前调用,最好的选择是 after_setup_theme 钩子。
添加文章类型支持
文章类型需要在 functions.php 文件中使用 add_post_type_support() 来告诉 WordPress 使用哪些文章形式:
<?php
// add post-formats to post_type 'page'
add_post_type_support( 'page', 'post-formats' );
// add post-formats to post_type 'my_custom_post_type'
add_post_type_support( 'my_custom_post_type', 'post-formats' );
或者在 register_post_type() 函数中的'supports' 参数数组中添加 'post-formats':
<?php
$args = array(
...
'supports' => array('title', 'editor', 'author', 'post-formats')
);
register_post_type('book', $args);
使用文章形式
在主题中,使用 get_post_format() 检查一个文章的文章形式,并相应地改变其样式。注意,如果文章使用默认形式将返回False。或使用 has_post_format() 条件标签:
<?php
if ( has_post_format( 'video' )) {
echo 'this is the video format';
}
一个替代的方式是通过层叠样式表来使用文章形式。主题应该使用 post_class() 函数封装器给文章添加动态class属性,真个方法将在不同的文章类型下显示额外的样式类,使用 "format-foo" 名。
举例说明,一个可以隐藏标题的状态文章形式,放入一下代码到你的主题样式表中:
.format-status .post-title {
display:none;
}