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

倡萌昨天分享的 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。请记得为所有分类创建自己的模板文件。
例如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 ,可以这样写
/** * 不同分类使用不同的文章模板 * 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');
然后我们结合 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' ); } ?>
好了,例子就说到这里,只要大家明白了其中的原理,就可以应用自如了。

上一个:使用python脚本创建mysql数据库
下一个:百度上线绿萝算法,seo要怎么做
新余网站建设,新余做网站,新余网站设计