在 3.1 版本中引入的文章形式,是文章的一种属性,可以被主题用来决定文章的显示方式。其设计目的是要提供一个特殊的方法来根据文章的特点选用显示“格式”。该方法用于替代以前需要使用分类来达到同样目的的做法,而且更重要的是,该方法在支持的主题间是通用的。
- 官方文档:WordPress
简单地说,如果一位博客作者正在使用一个支持“文章形式”的主题,那么作者就可以从一个单选列表中选择文章的形式,以此决定文章的显示样式。
以前是通过不同的文章分类,来使用不同的页面模板,现在有了“文章形式”,在发表文章时,可以选择文章发表的文章形式,用于区分其他文章的形式,从而提高文章关注度。
有了文章形式,就为主题设定文章格式提供了一种的新方法(例如,add_theme_support('post-formats', array('aside'))),然后就可以在保存文章的时候在发布信息框里选择对应的文章格式。通过调用功能函数get_post_format( $post->ID )就能确定文章所属格式,而post_class()将会创建“format-asides”类,以用于纯 CSS 样式编辑。
使用方法
- 参考链接:详情
在主题的 functions.php 中添加下列代码,以添加形式;
add_theme_support( 'post-formats', array( 'aside', 'chat','gallery','image','link', 'quote', 'status', 'video', 'audio' ) );
在你的文章循环的位置,添加下列判断
<?php if( has_post_format( 'status' )) { //状态 ?>
状态样式
<?php } else if ( has_post_format( 'aside' )) { //日志 ?>
日志样式
<?php } else if ( has_post_format( 'gallery' )) { //相册 ?>
相册样式
<?php } else if ( has_post_format( 'video' )) { //视频 ?>
视频样式
<?php } else if ( has_post_format( 'audio' )) { //音乐 ?>
音乐样式
<?php } else{ //标准 ?>
常规样式
<?php } ?>
在你启用文章的形式后,会在这里进行一个文章形式的判断,你可以通过
<?php get_template_part( 'template-parts/content-main', get_post_type() );?>
来调用对应的模板文件,模板文件的调用顺序可参考
例子
上面讲解了什么是文章形式、如何添加文章形和如何判断文章形式,下面就来了解下如何实现不同文章形式使用不同模板。
在判断内添加文章循环的方法:
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
第一:举例,我们先添加视频音频文章形式,首先在functions.php添加下面代码
add_theme_support( 'post-formats', array( 'video','audio', ) );
第二:在index.php(或者需要用到文章形式的文件)中找到文章循环代码:
<?php while ( have_posts() ) : the_post(); ?>
内容
<?php endwhile; ?>
替换成下面代码
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
第三:在主题目录创建
- content.php(默认文章形式)
- content-audio.php(音频形式)
- content-video.php(视频形式)
如果添加了别的文章形式 就要创建 content-xxx(形式名称).php
支持的形式
目前支持以下文章格式:
- 日志(aside) - 典型样式就是没有标题。类似于 Facebook 或人人网中更新的一条日志。
- 相册(gallery) - 图像陈列厅。文章中通常会有“gallery”代码和相应的图像附件。
- 链接(link) - 链接到其它网站的链接。主题可能会使用文章中的第一个 <a href=""> 标签作为文章的外部链接。有可能有的文章至包含一个 URL,那么这个 URL 将会被使用;同时,文章标题(post_title)将会是附加到它的锚的名称。
- 图像(image) - 单张图像。文章中的首个 <img /> 标记将会被认为是该图片。另外,如果文章只包含一个 URL 链接,则被认为是该图片的 URL 地址,而文章标题(post_title)将会作为图片的标题属性。
- 引语(quote) - 引用他人的一段话。通常使用 blockquote 来包裹引用内容。或者,可能直接将引语写入文章,并将其出处写在标题栏。
- 状态(status) - 简短更新,通常最多 140 个字符。类似于微博 Twitter 状态消息。
- 视频(video) - 单一视频。文章中第一个 <video /> 或 object 或 embed 将被作为视频处理。或者,文章可以仅包含视频的 URL,甚至一些主题和插件可以支持自动嵌入您的文章附件中的视频。
- 音频(audio) - 一个音频文件。可以用于播客(podcasting)等。
- 聊天(chat) - 聊天记录,类似于:
张三: foo 李四: bar 张三: foo 2
注意:当编辑文章时,若没有指定文章样式,则默认使用“标准”。同样,若指定了一个无效的文章形式,那么也将默认使用标准样式。
参考函数
主题和插件可以使用函数 set_post_format() 来设置形式,使用 get_post_format() 来查询形式,使用 has_post_format() 来检查是否已经设置了某个形式。
添加主题支持
主题必须使用 add_theme_support() 函数,通过传递一个数组来告诉 WordPress 使用何种文章形式,例如:
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
然后在主题中使用 get_post_format() 函数以检查文章格式,并据此来修改格式。要注意的是使用默认格式的文章时,该函数返回值为FALSE。或者使用 条件判断标签函数 has_post_format():
if ( has_post_format( 'video' )) { echo 'this is the video format'; }
理解
怎么说呢,这个功能就是定义某一篇文章在列表中展现的形式,样式可以自己随便的DIY,以后发表文章时,可以选择发表的形式,可以只写一句话像微博一样,可以单独分享一个图片、视频或者音乐,而且因为展现形式区别于其他文章的形式,往往关注量也会高些。
注意:当编辑文章时,若没有指定文章样式,则默认使用“标准”。同样,若指定了一个无效的文章形式,那么也将默认使用标准样式。