网上主要有两种方法:
1. 设置单独的分类页面,比如把category.php改为category-99.php,那就是让ID为99的category分类直接用这个php模板。这个办法简单有效,但是只适合于分类少的情况,而且后期修改很麻烦。
2. 部分人用了当前页面函数,我刚转载了https://www.wpdaxue.com/different-post-templates-for-different-categories.html的文章过来。
个人总结了一种更好的方法,判断当前目录的ID,然后根据ID 跳转。
首先读取ID,
在function.php 增加这个函数:
<?php //调用所有目录的ID
function show_category(){
global $wpdb;
$request = “SELECT $wpdb->terms.term_id, name FROM $wpdb->terms “;
$request .= ” LEFT JOIN $wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id “;
$request .= ” WHERE $wpdb->term_taxonomy.taxonomy = ‘category’ “;
$request .= ” ORDER BY term_id asc”;
$categorys = $wpdb->get_results($request);
foreach ($categorys as $category) { //调用菜单
$output = ‘<li>’.$category->name.”(<em>”.$category->term_id.'</em>)</li>’;
echo $output;
}
}
?>
单独做做个sitemap.php,
输入此函数:
<?php show_category(); ?>
你就可以在这个页面看到所有的分类ID。
把category.php复制一份备案,然后把里面所有的代码都更换了:
<?php/**
建议把前面sitemap读取的分类ID复制过来,方便你下面写程序
Products(5)
Quality(6)
*/?>
<?php $category = get_the_category(); ?><!–* 判断目录ID,如果符合条件就特别显示,其他都常规显示 */–>
<?php $cateid = $category[0]->cat_ID; ?>
<?php if($cateid==6||$cateid==7||$cateid==12){ ?>
<?php include(TEMPLATEPATH.”/category-com.php”); ?>
<?php }else{ ?>
<?php include(TEMPLATEPATH.”/category-special.php”); ?><?php } ?>
如果ID 6 / 7/ 12目录,就跳转到category-com.php模板。其他则去special模板,记住不要写成category-数字.php的型式,否则wp默认会让该数字的分类直接读取。