WordPress 自定义文章类型备忘录

本文最后更新于2014年3月28日,已超过半年没有更新,如果内容失效,请反馈,谢谢!

Wordpress 自定义文章类型 自定义文章类型用的人不太多吧。在用 搭建 CMS 或企业网站的过程中,经常会遇到定义新的文章类型(Custom Post Type)和自定义的分类法(taxnomy)。 函数默认的参数往往都是针对默认的post文章类型,比如我们要添加“产品”、“服务”等文章类型,就需要用到自定义文章类型。关于自定义文章类型的创建方法,网上有很多介绍的文章,在此不再细述,由于 Maie 对于 WordPress 和代码不太熟悉,这里只摘要一些内容进行备忘。

创建和管理自定义文章内容和分类法

创建自定义文章类型 Maie 使用的是 Custom Post Type UI 插件(简称CPT UI),关于插件的使用方法,请自行百度。创建时只需要将标红色 * 星号的自定义文章类型名称和分类名称写为小写英文即可。
注意的是其中 Has Archive? 选项我设置为 False, 如果设置为 Ture 时,草稿和其它类型的文章也会显示在后台的文章列表中,不清楚具体原因。

显示自定义分类归档

显示自定义分类归档可以参考 WordPress 官方整理的模板层次结构图

若要显示“xx类型归档:标题”可以在 archive.php 或 tag.php 或 template-tags.php 中加入对自定义文章类型的判断。

if ( is_tax('自定义分类法名称xxx') ) {
		$title = sprintf( __( 'xxx Archives: %s', '主题名称' ), '' . single_cat_title( '', false ) . '' );
}

如何获取自定义的文章类型文章

若使用 CPT UI 创建的自定义文章类型时启用 Tag 标签,则在此自定义的文章类型下新建文章时设置的 Tag 标签在默认主题中点击是无法显示该标签的归档内容的。表现为若此 tag 标签仅存在于该自定义文章类型中,则点击标签时显示为:未找到;若此 tag 在该分类和 post 类别均有相关文章,则 post 类别中的文章可以正常显示,其它不显示。

以下有两种方法用于在程序中获取自定义的文章类型文章:

  1. 在函数中指定 post_type 和 taxnomy 的参数,参见: http://codex.wordpress.org/Post_Types
  2. 在插件或者主题的function.php中,通过pre_get_posts添加post类型,这样页面中就不需要考虑多种文章类型的获取了。
// Show posts of 'post', 'product' and 'service' post types on archive page
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
	if ((is_tag()||is_archive()) && $query->is_main_query() )
		$query->set( 'post_type', array( 'post', 'product', 'service' ) );
	return $query;
}

上面的例子是在tag存档和分类存档页面返回文章、产品和服务三种文章类型的文章,也可以根据分类,作者,自定义的分类进行判断。

相关文章显示自定义文章类型

在无觅等相关文章插件中显示自定义文章类型,需要修改无觅相关文章插件的内容, 在 private function canDisplayWumiiContent() 中

get_post_type() == 'post'

后面添加

(get_post_type() == 'post'||get_post_type() == '自定义文章类型')
除非注明,流浪天下 文章均为原创,转载请以链接形式注明出处。
本文链接地址:
订阅本站:http://maie.name/feed投稿联系:m[at]maie.name

猜你也喜欢:

共有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注