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

为WordPress子分类自动设置指定的分类模版,第1张

概述这段时间开发了一个网站,网站里面,文章有两个级别的分类,其中父级分类是一个单独的模版,每个父级分类下面的二级分类用一个子分类模板,每个父级分类和

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。内存溢出小编现在分享给大家,也给大家做个参考。

这段时间开发了一个网站,网站里面,文章有两个级别的分类,其中父级分类是一个单独的模版,每个父级分类下面的二级分类用一个子分类模板,每个父级分类和子分类模版都是不一样的。这个需求最直接的方式是按照 wordpress 官方的教程,使用 “category-slug.PHP” 这样的模版文件,为每个分类指定模版。虽然能实现,但这是一个丑陋的实现方法,会导致每个子分类都要复制一个相同的模版。增加子分类的时候,还需要重再复制一次,产生了很多重复无意义的工作,后期维护起来也比较困难。

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

add_filter( 'category_template',function ( $template )

{

$term = get_querIEd_object();

 

if ( $term->parent == 58 ) {

$new_template = locate_template( [ 'templates/archive/archive-topic.PHP' ] );

 

if ( '' != $new_template ) {

return $new_template;

}

}

 

return $template;

},99 );

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

我们的目标是做国内最专业的 wordpress 服务商,我们追求的是不但要实现需求,并且要以最简洁有效、最有扩展性的方法来实现这个需求,并且要让客户用起来方便。于是更进了一步,我们改造了一下上面的代码。首先获取当前分类的顶级分类,如果顶级分类存在,尝试在 「templates/category/」 目录中寻找顶级分类对应的「category-顶级分类 slug.PHP」文件,如果文件存在,返回这个模版作为二级分类模版,如果不存在,返回默认模版。

add_filter( 'category_template',function ( $template )

{

$term = get_querIEd_object();

$ancestors = get_ancestors( $term->term_ID,'category' );

 

if ( ! empty( $ancestors ) ) {

$ancestor = get_term( $ancestors[ 0 ] );

$new_template = locate_template( [ 'templates/category/category-'. $ancestor->slug .'.PHP' ] );

 

if ( '' != $new_template ) {

return $new_template;

}

}

 

return $template;

},99 );

这样一来,就方便多了,增加分类的时候,直接增加一个「category-顶级分类 slug.PHP」就可以设置子分类模版了,并且在迁移数据的时候,只要分类 Slug 不改变,就不需要修改代码来适配数据, *** 作方法和 wordpress 默认的指定模版方法类似。有需要的朋友,可以根据自己的需要改造以上代码。或者如果你有更好的实现,可以投稿过来,方便更多有需要的朋友。

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的为WordPress子分类自动设置指定的分类模版全部内容,希望文章能够帮你解决为WordPress子分类自动设置指定的分类模版所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/1007851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存