WordPress 3.1 之后,推出了一个模仿 Tumblr 的「文章形式」功能,可以让博客中除了默认的文章之外展现出更多的特殊样式。不同的文章形式,可以支持在输出时进行判断处理,以及列出存档等等……很多细心的主题里面都会加上对一些文章形式的支持,如果在面临特殊需求时,希望能够自定义专门的编辑器或者分类目录,那么还可以去注册一个自定义的文章类型。
WordPress 已经内置对几种常用的文章形式的支持,如果可以满足需要,那么就不需要再重复造轮子了,只需要添加主题对已有形式的支持就好了。内置形式列表如下:
如果想添加对以上形式的支持,只需要在 functions.php 里添加对应的项目即可,然后在输出文章的时候使用函数判断切换不同的样式:
// 添加对文章样式的支持,在数组中增加以上列表的类型别名即可 add_theme_support( 'post-formats', array( 'status', 'chat' ) ); // 在输出文章时,增加一个判断语句来使用不同的输出格式 // has_post_format() 函数返回判断是否是该形式的布尔值 if ( has_post_format( 'chat' )) { echo 'orzFly 22:27:28: 我勒个去我说好像在哪儿听说过三三。。'; } // get_post_format() 函数返回文章形式的别名 if ( get_post_format() == 'status' ) { echo '不愉快です。'; } // 还可以利用 post_class() 函数给每个形式输出专有类的功能,在HTML结构差异不大无需更改的情况下使用" >
如果以上自带的函数无法满足贪得无厌的你的需求,除了自定义栏目以外,还可以来定制一个属于自己的文章类型。示例如下:
function custom_format() { // 文章形式设置 $args = array( 'public' => true, 'label' => '时间轴' ); // 注册文章形式函数,需要别名和设置数组两个参数 register_post_type( 'timeline', $args ); } // 添加注册动作 add_action( 'init', 'custom_format' );
至于设置的内容,这个就多了。常用的设置属性如下,是否开头的项值都是 true 或者 false:
[cap] => stdClass Object ( [edit_post] => "edit_{$capability_type}" [read_post] => "read_{$capability_type}" [delete_post] => "delete_{$capability_type}" [edit_posts] => "edit_{$capability_type}s" [edit_others_posts] => "edit_others_{$capability_type}s" [publish_posts] => "publish_{$capability_type}s" [read_private_posts] => "read_private_{$capability_type}s" [delete_posts] => "delete_{$capability_type}s" [delete_published_posts] => "delete_published_{$capability_type}s" [edit_private_posts] => "edit_private_{$capability_type}s" )
本文来自 钉子の次元 - Dimpurr - 千里之行,始於足下。 ,原文地址 为 WordPress 主题添加文章形式支持和注册自定义类型