性价比最高的香港ASP、PHP主机提供商
做网站,就上凡科建站

WordPress不同分类使用不同的文章模板

Loading
1
Comodo SLL证书促销 - 免费ssl证书申请_ssl证书购买_ev ssl证书_https证书购买 - GDCA_数安时代

倡萌昨天分享的 Custom Post Template 和 Single Post Template 可以让你自定义每篇文章的文章模板,今天来说说WordPress不同分类使用不同的文章模板。

方法一:根据模板文件名进行判断

1.将下面的代码添加到当前主题的 functions.php 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 不同分类使用不同的文章模板
* From https://www.wpdaxue.com/custom-single-post-template.html
*/
//定义模板文件所在目录为 single 文件夹
define(SINGLE_PATH, TEMPLATEPATH . '/single');
//自动选择模板的函数
function wpdaxue_single_template($single) {
	global $wp_query, $post;
	//通过分类别名或ID选择模板文件
	foreach((array)get_the_category() as $cat) :
		if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
			return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
		elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
			return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
	endforeach;
}
//通过 single_template 钩子挂载函数
add_filter('single_template', 'wpdaxue_single_template');

2.在当前主题的根目录创建一个名为 single 的文件夹,然后根据不同分类创建不同的文件,命名格式为 single-cat-[分类别名或ID].php。请记得为所有分类创建自己的模板文件。

custom-single-post-template-wpdaxue_com

例如WordPress大学的”WordPress主题“这个分类的别名为”themes“,ID 为 2,那就可以命名为 single-cat-themes.php 或 single-cat-2.php 。这样,只要是WordPress主题这个分类,就会自动选择 single-cat-themes.php 或 single-cat-2.php 作为这个分类的文章模板。

方法二:使用 in_category() 进行判断

in_category() 函数可以通过分类别名或ID判断当前文章所属的分类,而且可以直接在循环(Loop)内部和外部使用。

如果是单个分类 ID ,比如ID 为 2 ,可以这样写

1
in_category(2)

如果是单个分类别名,比如别名为 themes,可以这样写

1
in_category('themes')

如果是多个ID,可以这样写

1
in_category( array( 2,3,7) )

如果是多个别名,可以这样写

1
in_category( array( 'themes','plugins','develop') )

然后我们结合 if 语句就可以很好地实现模板的选择。比如我们可以在主题的根目录创建3个文章模板文件,分别命名为 single001.php , single002.php 和 single003.php,然后我们希望 ID 为 2 和 3 的分类使用 single001.php,ID为 7 的分类使用 single002.php ,其他分类使用 single003.php,那么,我们可以在 single.php 文件写入下面的代码:

1
2
3
4
5
6
7
8
9
<?php 
if ( in_category(array( 2,3 )) ) {
	get_template_part('single001' );
} elseif ( in_category( 7 )) {
	get_template_part('single002' );
} else {
	get_template_part('single003' );
}
?>

好了,例子就说到这里,只要大家明白了其中的原理,就可以应用自如了。

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

MetInfo | 最适合企业网站建设的cms系统

关于 倡萌

一个疯狂的 WordPress 爱好者,喜欢折腾 WordPress 主题,分享 WordPress 资源。如果你也喜欢 WordPress,欢迎和我一起交流!

精彩推荐

WordPress文章链接重定向插件:WP Post Redirect

WordPress文章链接重定向插件:WP Post Redirect

WordPress添加文章打印和生成PDF的功能

WordPress添加文章打印和生成PDF的功能

21 条评论

  1. 第一种方法导致其他分类目录的文章不能用single.php,只能用index.php了,怎么解决呢,急求

  2. 第二种方法调出两个页面内容 求大神搭救

  3. 第一种方法对一篇文章同时存在于多个分类的无效。

  4. 最近做了一个网站,有一个这样的需求:给不同的分类建立不同的页面,当通过分类关键字查询到某个分类时,要调用指定的页面,现在的问题是:使用第2种方法能在获取到某个分类时调用指定的页面,却无法翻页,求解!!!非常感谢!

  5. 怎么都说第一个不能用,我一用第一个就管用。

  6. 您好,第一种方法,必须要分别指定每个分类调用的文章页吗?

  7. 检测到错误,调用出来两个文章页内容,怎么解决?第二种方法调出两个相同的文章内容

  8. 谢楼主,第二种方法完美解决!

发表评论