上面是搬码源码网 abnma.com 经由过程收集网络收拾整顿的代码片断。搬码源码网小编此刻分享给各人,也给各人做个参考。
这段时间开发了一个网站,网站内里,文章有两个级另外分类,此中父级分类是一个零丁的模版,每个父级分类上面的二级分类用一个子分类模板,每个父级分类和子分类模版都是纷歧样的。这个需要最间接的体式格局是根据 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 默许的指定模版要领近似。有需求的伴侣,可以按照本身的需求改造以上代码。或许假如你有更好的完成,可以投稿过来,利便更多有需求的伴侣。
以上是搬码源码网(abnma.com)为你网络收拾整顿的全数代码内容,但愿文章可以或许帮你解决所碰到的步伐开提问题。假如感觉搬码源码网网站内容还不错,接待将搬码源码网网站保举给步伐员挚友。
总结
以上是搬码源码网为你网络收拾整顿的为WordPress子分类主动设置指定的分类模版全数内容,但愿文章可以或许帮你解决为WordPress子分类主动设置指定的分类模版所碰到的步伐开提问题。
假如感觉搬码源码网网站内容还不错,接待将搬码源码网网站保举给步伐员挚友。
请先
!