为WordPress子分类自动设置指定的分类模版

2021-05-22 0 1,372 百度已收录

这段时间开发了一个网站,网站内里,文章有两个级其余分类,其中父级分类是一个单独的模版,每个父级分类下面的二级分类用一个子分类模板,每个父级分类和子分类模版都是纷歧样的。这个需求最直接的方式是根据 WordPress 官方的教程,使用 “category-slug.php” 这样的模版文件,为每个分类指定模版。虽然能实现,但这是一个貌寝的实现方式,会导致每个子分类都要复制一个相同的模版。增添子分类的时刻,还需要重再复制一次,发生了许多重复无意义的事情,后期维护起来也对照难题。

凭证多年的 WordPress 开发履历,我们凭直觉以为,一定会有更好的实现方式,于是我们做了一些研究和测试,发现可以用 category_template Filter 来很简朴的实现这个需求,下面就是实现这个需求的代码。首先获取当前分类,若是当前分类的父级分类是指定的某个分类,实验获取指定的分类模版,若是分类模版存在,返回指定的分类模版,若是不存在,返回默认的模版。

  1. add_filter( 'category_template', function ( $template )
  2. {
  3.    $term = get_queried_object();
  4.  
  5.    if ( $term->parent == 58 ) {
  6.       $new_template = locate_template( [ 'templates/archive/archive-topic.php' ] );
  7.  
  8.       if ( '' != $new_template ) {
  9.          return $new_template;
  10.       }
  11.    }
  12.  
  13.    return $template;
  14. }, 99 );

上面的代码为父级分类为 「58」 的子分类设置了 templates/archive/archive-topic.php 文件作为分类模版。若是需要为父级分类为 「68」 的子分类设置一个模版呢?把上面的 if 逻辑复制一次,修改其中的 「58」 和 「archive-topic.php」 就可以了。额,虽然笔文章开头的实现方式好了一些,但照样需要复制代码,而且使用分类 ID 作为指定分类的逻辑会有一些风险。

我们的目的是做海内最专业的 WordPress 服务商,我们追求的是不只要实现需求,而且要以最精练有用、最有扩展性的方式来实现这个需求,而且要让客户用起来利便。于是更进了一步,我们刷新了一下上面的代码。首先获取当前分类的顶级分类,若是顶级分类存在,实验在 「templates/category/」 目录中寻找顶级分类对应的「category-顶级分类 slug.php」文件,若是文件存在,返回这个模版作为二级分类模版,若是不存在,返回默认模版。

  1. add_filter( 'category_template', function ( $template )
  2. {
  3.    $term      = get_queried_object();
  4.    $ancestors = get_ancestors( $term->term_id, 'category' );
  5.  
  6.    if ( ! empty( $ancestors ) ) {
  7.       $ancestor = get_term( $ancestors[ 0 ] );
  8.       $new_template = locate_template( [ 'templates/category/category-'. $ancestor->slug .'.php' ] );
  9.  
  10.       if ( '' != $new_template ) {
  11.          return $new_template;
  12.       }
  13.    }
  14.  
  15.    return $template;
  16. }, 99 );

这样一来,就利便多了,增添分类的时刻,直接增添一个「category-顶级分类 slug.php」就可以设置子分类模版了,而且在迁徙数据的时刻,只要分类 Slug 不改变,就不需要修改代码来适配数据,操作方式和 WordPress 默认的指定模版方式类似。有需要的同伙,可以凭证自己的需要刷新以上代码。或者若是你有更好的实现,可以投稿过来,利便更多有需要的同伙。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3308869544
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有猫币奖励和额外收入!

主题镇 WP教程 为WordPress子分类自动设置指定的分类模版 https://zhutizhen.com/14600.html

永远为用户服务的镇长!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或联络我们。
查看详情

相关文章