wordpress子分类优先继承父分类模板

原创 tiangr  2016-12-24 00:39  阅读 118 次

参考链接:

https://codex.wordpress.org/Category_Templates

http://wordpress.stackexchange.com/questions/145805/how-to-make-child-categories-recognize-parents-template-displays

wordpress的文章分类默认的模板加载顺序为:

  1. category-slug.php
  2. category-ID.php
  3. category.php
  4. archive.php
  5. index.php

如果你想动态修改某个分类的模板样式,直接添加一个category-{分类的别名}.php 文件是个非常不错的选择,这样就可以省去添加一种自定义的文章类型的麻烦,还能将分类放在一起统一管理。

甜果网的下载资源电子书与视频教程板块 就是使用了这个技巧,但是大家发现下载资源中的子分类,比如 wordpress &woocommerce  ,它使用的分类模板是继承了父分类的模板,这里如果要使用和父分类一样的模板,就得复制父分类的模板,然后按上面的文件命名格式,新建一个名为 category-wp.php的文件。这种办法非常笨拙,尤其在子分类很多的情况下,你就得复制很多个父分类的模板,而这些文件基本代码都一样。

这里提供一种更快捷的解决办法:

  1. /**
  2.  * 让自定义的子分类继承父分类模板
  3.  */
  4. if ( ! function_exists('subcategory_extend_parent') ):
  5. function subcategory_extend_parent() {
  6.     $category = get_queried_object();
  7.     $parent_id = $category -> category_parent;
  8.     $templates = array();
  9.     // 顶级目录
  10.     if ( $parent_id == 0 ) {
  11.         $templates[] = "category-{$category -> slug}.php";
  12.         $templates[] = "category-{$category -> term_id}.php";
  13.     } else {
  14.         $parent = get_category($parent_id);
  15.         // 子目录
  16.         $templates[] = "category-{$category -> slug}.php";
  17.         $templates[] = "category-{$category -> term_id}.php";
  18.         // 如果子目录的模板不存在,则加载父分类模板
  19.         $templates[] = "category-{$parent -> slug}.php";
  20.         $templates[] = "category-{$parent -> term_id}.php";
  21.     }
  22.     $templates[] = "category.php";
  23.     $templates[] = "archive.php";
  24.     return locate_template( $templates );
  25. }
  26. add_filter('category_template', 'subcategory_extend_parent_nana');
  27. endif;

我们改变了子分类的默认模板加载顺序,在加载公共的category.php模板之前,先查询父分类是否包含有指定的特殊模板。

特别提示:本站资源全部免费下载,因服务器需经费维护,文中部分外链点击后会进入广告,请耐心等待5秒即可跳过广告进入目标页面。如遇页面外链打不开或下载地址失效,您可以在评论中指出错误,或扫描页面底部二维码。
本文地址:http://www.tiangr.com/wordpress-zi-fen-lei-you-xian-ji-cheng-fu-fen-lei-mo-ban.html
版权声明:本文为原创文章,版权归 tiangr 所有,欢迎分享本文,转载请保留出处!

发表评论


表情