Forfly 翔!
Mr. Le's personal blog, life, love and others. 人生就像是旅行,不必在乎目的地,只在乎沿途的风景!
All Rights reserved by Mr. Le

wordpress不同分类跳转不同的分类模板

网上主要有两种方法:

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默认会让该数字的分类直接读取。

 

2017-02-07
暂无评论

发表回复