主题使用文章格式以特定格式和风格展示帖子。邮政格式功能提供了可用于支持该功能的所有主题的标准格式列表。主题可能不支持列表中的每种格式;在这种情况下,使用户知道这是很好的形式。 主题不能引入不在标准化列表中的格式,即使是通过插件。这种标准化确保主题之间的兼容性和外部工具以一致的方式使用该功能的方式。 简而言之,通过支持邮政格式的主题,博客可以通过选择邮政格式来更改邮局的外观。 使用Asides作为示例,过去已创建一个名为Asides的类别,并将帖子分配给该类别,然后根据post_class()或in_category('asides')中的样式规则显示不同的内容。 使用Post格式,新方法允许主题添加对Post格式的支持(例如,add_theme_support('post-formats',array('aside'))),然后可以在Publish meta框中选择Post格式保存帖子。可以使用get_post_format($ post-> ID)的函数调用来确定格式,并且post_class() 也将为pure-css样式创建“format-asides”类。 ## 支持的格式 如果主题支持,则可以使用以下Post格式。 >[warning] 请注意,虽然实际的帖子内容不会更改,但主题可以根据所选格式显示不同的帖子。 显示职位的方式完全取决于主题,但以下是对不同Post格式的典型用法的一般指导。 - aside – 通常风格没有标题。 类似于Facebook笔记更新。 - gallery – 图像库。 帖子可能包含一个图库的短码,并将附有图像附件。 - link – 指向另一个网站的链接。 主题可能希望在帖子内容中使用第一个`<a href="">`标签作为该帖子的外部链接。 一个替代方法可能是,如果帖子只包含一个URL,那么这将是URL,标题(post_title)将是附加到锚点的名称。 - image – 单一图像。 帖子中的第一个`<img />`标签可以被认为是图像。 或者,如果帖子只包含一个URL,那将是图像URL,并且该帖子的标题(post_title)将是该图像的标题属性。 - quote – 引用。 可能会包含一个包含报价内容的blockquote。 或者,引用可能只是内容,源/作者是标题。 - status – 一个简短的状态更新,类似于Twitter状态更新。 - video – 一个视频。 第一个`<video />`标签或对象/嵌入到帖子内容可以被视为视频。 或者,如果帖子只包含一个URL,那将是视频URL。 如果在博客上启用视频支持(如通过插件),也可以将该视频作为帖子的附件。 - audio – 一个音频文件。 可用于播客。 - chat – 聊天记录如下: ``` John: foo Mary: bar John: foo 2 ``` >[warning] 注意:写入或编辑帖子时,“标准”表示没有指定后期格式。 另外如果指定了无效的格式,默认情况下会应用“标准”(无格式)。 # 功能参考 ## 主要功能 - set_post_format() - get_post_format() - has_post_format() ## 其他功能 - get_post_format_link() - get_post_format_string() ## 添加主题支持 主题需要在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钩子,以便在主题加载后注册后期格式支持。 ## 添加帖子类型支持 Post Types需要在functions.php文件中使用add_post_type_support()来告诉WordPress支持哪些格式: ``` function themename_custom_post_formats_setup() { // 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' ); } add_action( 'init', 'themename_custom_post_formats_setup' ); ``` 或者在函数register_post_type()中,添加'post-formats',在'supports'参数数组中: ``` $args = array( ... 'supports' =&gt; array('title', 'editor', 'author', 'post-formats') ); register_post_type('book', $args); ``` 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()函数在包围该文章的包装器代码添加动态样式类。 Post格式会导致使用“format-foo”名称以这种方式添加额外的类。 例如,可以通过将其放在主题的样式表中来隐藏状态格式帖子的帖子: ``` .format-status .post-title { display:none; } ``` 每种格式都适用于某种类型的“风格”,如现代用法所规定。在应用样式时,请牢记每种格式的预期用法。 例如,旁边,链接和状态格式是简单,简短和次要的。这些将通常显示没有标题或作者信息。旁边可能包含一段或两段,而链接将只是一个连接到其中的URL的句子。链接和旁边可能都有一个链接到单个帖子页面(使用the_permalink()),因此将允许评论,但状态格式很可能没有这样的链接。 另一方面,图像柱通常只包含单个图像,具有或不具有标题/文本以与之一起。音频/视频文章将是相同的,但添加了音频/视频。这三个中的任何一个可以使用插件或标准嵌入来显示其内容。标题和作者可能不会显示给他们,因为内容可能是不言自明的。 报价格式特别适合发布一个没有额外信息的人的简单报价。如果你把报价单放在帖子内容中,并把引用的人的名字放在帖子的标题中,那么你可以对帖子进行风格化,以便自己显示the_content(),然后重新设置为blockquote格式,并使用the_title()显示被引用的人的名称作为旁路。 在许多情况下,特别的聊天可能会趋向于等宽型显示。使用.format-chat上的一些样式,您可以使用等宽字体显示帖子的内容,也许在灰色背景div或类似内容中,从而将其视为聊天会话。 ## 子主题格式 子主题继承由父主题定义的帖子格式。 在子主题中为post格式调用add_theme_support()必须比父主题的优先级更高,并覆盖现有的列表,而不是添加它。 ``` add_action( 'after_setup_theme', 'childtheme_formats', 11 ); function childtheme_formats(){ add_theme_support( 'post-formats', array( 'aside', 'gallery', 'link' ) ); } ``` 调用remove_theme_support('post-formats')将一起删除它。