ZHANN上次分享的 Custom Post Template 和 Single Post Template 可以让你自定义每篇文章的文章模板,今天来说说WordPress不同分类使用不同的文章模板。 方法一:根据模板文件名进行判断1.将下面的代码添加到当前主题的 functions.php 文件:

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

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

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

/**
* 不同分类使用不同的文章模板
* From https://www.zhann.cn/notes/86.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';
        }elseif(file_exists(SINGLE_PATH . '/single.php')){
            return SINGLE_PATH . '/single.php';
        }
	endforeach;
}
//通过 single_template 钩子挂载函数
add_filter('single_template', 'wpdaxue_single_template');

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

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

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

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

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

in_category(2)

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

in_category('themes')

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

in_category( array( 2,3,7) )

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

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' );
}
?>

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

温馨提示:本文最后更新于 2022-02-22 20:43 ,某些文章具有时效性,若有错误或已失效,请在下方留言或联系QQ115904045
声明:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:115904045@qq.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA打赏
共{{data.count}}人
人已打赏
建站经验

找人做网站应当要如何进行选择才更好

2022-1-8 8:30:00

wordpress教程

帝国cms动态页分页函数page1解析说明

2022-2-26 10:47:21

  • 0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索

    夕阳无别事,等风也等你

    联系我们