当前位置:首页>WordPress建站>WordPress开发>让WordPress不同的分类目录的文章调用不同的模板

让WordPress不同的分类目录的文章调用不同的模板

近日,因为网站建设的需要,在没有使用自定义文章类型的情况下,使用不同的分类目录里的文章调用不同的模板,作为注册wordpress大学的见面礼。

首先在function.php里,添加如下代码:

//获取并输入某个分类的子分类
function post_is_in_descendant_category( $cats, $_post = null )
{
  foreach ( (array) $cats as $cat ) {
    // get_term_children() accepts integer ID only
    $descendants = get_term_children( (int) $cat, 'category');
    if ( $descendants && in_category( $descendants, $_post ) )
      return true;
  }
  return false;
}

复制一份single.php,命名为:single-*.php文件名(你可以根据自己的需要,制作多个 single-*.php 文件,通过修改每个single-*.php 文件的html结构和添加对应的CSS,就可以实现不同的文章页面样式 )。

将 single.php 里面除了 get_header(); get_footer(); get_sidebar(); 之外的所有内容改成:

<?php
if ( in_category('16') || post_is_in_descendant_category(16) )//可自行修改 这里包含分类目录里的文章和分类目录里的子分类目录里的文章
{
  include(TEMPLATEPATH .'/single-16.php');
}
elseif ( in_category('7') || post_is_in_descendant_category(7) )//如果只有两类single.php,可以不要这段,如果是多类,则添加多个elseif
{
  include(TEMPLATEPATH . '/single-7.php');
}
else{
  include(TEMPLATEPATH . '/single-other.php');
}//给其他分类的文章调用的。
?>

倡萌注:该文章的方法和倡萌之前分享的《WordPress不同分类使用不同的文章模板》的方法二一样,就是使用 in_category() 函数来判断,不同的地方就是添加了自定义函数 post_is_in_descendant_category() 来获取某个分类的子分类。本来打算直接在之前的文章中更新的,但考虑到这是 @leon 朋友注册的见面礼,所以就单独为文,多谢分享!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发

WordPress 检测某个插件是否已经启用

2013-8-10 10:57:15

WordPress开发

WordPress wp_nav_menu()菜单输出菜单描述

2013-9-3 9:13:48

13 条回复 A文章作者 M管理员
  1. 试了一下,只有父级分类有这个功能,子分类没法调用

    • 是不是你自己没有添加子分类的ID啦

  2. 这种方法挺不错,感觉要比自定义文章分类要好些,只是只能在网站建设好以后重新获取分类id或别名在修改代码,不够智能化,但也不算太麻烦。用 自定义文章类型 更换主题后以前写的自定义文章都会丢失?各有各的优点吧。
    —–刚才试了一下,更换主题后,自定义文章并没有丢失 ➡

  3. dejun8

    正好在研究这个问题 谢谢了

  4. 路过学习

  5. 学习了,谢谢

  6. 忘了补充,这样single-*.php的做法不可取的,假如你的single-16.php 刚好有一篇post的id是16,WP优先会引入那模版文件,正确做法应该category-*.php判断都不用,WP模版会自动引入。

    • 如果用别名呢?

  7. 什么年代了?还用include?请用get_template_part()函数

    • 看了你的所有回复,貌似是高手啊。还望不吝赐教。方便加QQ聊嘛?67267903

    • leon

      哪里哪里,破巧最近也用WP开发而已

    • 你好,有没有这个函数的详细用法?它与include有什么不同?

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索