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

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

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

/**
* 不同分类使用不同的文章模板
*/
//定义模板文件所在目录为 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。请记得为所有分类创建自己的模板文件。

例如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 文件写入下面的代码:

<?php
if ( in_category(array( 2,3 )) ) {
get_template_part('single001' );
} elseif ( in_category( 7 )) {
get_template_part('single002' );
} else {
get_template_part('single003' );
}
?>

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

转载自:https://www.wpdaxue.com/custom-single-post-template.html

最新文章

  1. Javassist 通用工具之 CodeInjector
  2. win7下cmd常用命令
  3. 关于SQL Server将一列的多行内容拼接成一行的问题讨论
  4. 完整安装cocoaPods
  5. Spring学习笔记 6. 尚硅谷_佟刚_Spring_Bean 之间的关系
  6. c中的指针
  7. 虚拟机下玩DXF
  8. UItableView的编辑--删除移动cell
  9. mysql二进制包安装与配置实战记录
  10. 怎么跳出MySQL的10个大坑
  11. xampp 命令行修改数据库密码
  12. LintCode-三数之和
  13. 常用的JQ函数
  14. 网络1711班 C语言第一次作业批改总结
  15. 很好用的电脑桌面远程控制软件 支持多平台 Win,Mac,Debian… 等操作系统 Anydesk
  16. python语法_装饰器
  17. Navicat for Mysql导入mysql数据库脚本文件
  18. rt-thread之rt_kprintf函数输出串口设备更改
  19. web.xml详细选项配置
  20. Spring boot 导出Excel

热门文章

  1. Cesium官方教程7--三维模型
  2. 第一周课堂笔记2th
  3. python 筛选序列中的元素
  4. ucore 地址映射的几个阶段
  5. np一些基本操作2
  6. C开发系列-continue与break
  7. Cmp- Linux必学的60个命令
  8. lc13 Roman to Integer
  9. 基于在树上走的DP问题
  10. NMS 和 Soft-NMS