父项和子项类别/分类的不同模板

时间:2012-11-02 作者:Cthulhu

我想知道为父类别和子类别和/或分类创建不同模板的最佳方法是什么。

示例:我有一个名为region的分类法,我想将其划分为国家和国家内部的城市。所以,我将有一个父分类术语叫做意大利,它是子分类术语,罗马,米兰,那不勒斯,随便什么。国家和城市是否可以有不同的模板?我怎样才能做到这一点?提前谢谢。

2 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

我建议创建3个文件

1) regiontemplate国家/地区。php

2) regiontemplate城市。php

这2个将包含国家/地区和;城市,那么

3) 分类区域。php

在此文件中,添加代码以加载适当的模板

<?php
$term = get_term_by(\'slug\', get_query_var(\'term\'), \'region\');
if((int)$term->parent)
    get_template_part(\'regiontemplate\', \'city\');
else
    get_template_part(\'regiontemplate\', \'country\');

SO网友:Adam

WordPress有一个template hierarchy 它将按特定顺序查找特定的模板文件。如果存在,WordPress将使用该模板文件呈现输出。

对于分类法,具体的层次结构如下所示;

1. taxonomy-{taxonomy}-{slug}.php //e.g. taxonomy-region-milan.php
2. taxonomy-{taxonomy}.php //e.g. taxonomy-region.php
3. taxonomy.php
4. archive.php
5. index.php 
因此,考虑到上述因素,您可以为region,

taxonomy-region.php //e.g. http://www.example.com/region/
。。。以及每个区域的slug特定模板文件,

taxonomy-region-milan.php //e.g. http://www.example.com/region/milan/
taxonomy-region-roma.php //e.g. http://www.example.com/region/roma/
etc...
发生的是。。。

如果用户导航到,

http://www.example.com/region/milan/
WordPress将首先尝试查找taxonomy-region-milan.php, 如果找到,它将返回此文件作为该分类术语的模板文件。如果未找到,则应转到下一个逻辑选择taxonomy-region.php 作为一种后备策略,等等,通过上面的层次结构列表一直工作到index.php 你肯定会有,因为没有它,你的主题无论如何都无法发挥作用。

现在,如果您只在意大利或任何国家的几个城市或地区工作,那么总体而言,这个概念可能是合适的。但是,当您开始与多个城市/地区/国家合作时,发现您在不同的模板文件中不断重复相同的代码,那么是时候使用更有效的方法了。

因此,我想问你的问题是,你的OP中提到的所有城市/地区的模板是否都相同?或者每一个都会有所不同?如果是-多少钱?因为只要有可能,你都想减少重复的代码,如果你需要调整/编辑/调整某些东西,并让这些变化反映在你的网站上,这会让你的生活更轻松。

在多个文件上手动执行此操作可能会很乏味,并且容易出现更多错误。

资源:http://codex.wordpress.org/Template_Hierarchy

结束

相关推荐

Naming custom page templates

我正在创建一个网站,主要由静态页面和一些动态内容以及博客页面组成。在命名文件方面,实现这一点的最佳方法是什么?我的第一个想法是简单地使用about.php, services.php, 等等,但我确信这对WP的系统不起作用。