category.php
这就是数组的外观:(按重要性/层次结构的顺序)
array(3) {
[0]=>
string(17) "category-cars.php"
[1]=>
string(15) "category-10.php"
[2]=>
string(12) "category.php"
}
这就是传递给get_query_template()
.function get_query_template( $type, $templates = array() ) {
$type = preg_replace( \'|[^a-z0-9-]+|\', \'\', $type );
if ( empty( $templates ) )
$templates = array("{$type}.php");
$template = locate_template( $templates );
/**
* Filter the path of the queried template by type.
*
* The dynamic portion of the hook name, `$type`, refers to the filename -- minus the file
* extension and any non-alphanumeric characters delimiting words -- of the file to load.
* This hook also applies to various types of files loaded as part of the Template Hierarchy.
*
* @since 1.5.0
*
* @param string $template Path to the template. See locate_template().
*/
return apply_filters( "{$type}_template", $template );
}
所有这一切的真正决策者是get_query_template()
其中使用locate_template
检查层次结构中的第一个可用模板,然后加载它。所以,首先get_query_template()
将查看是否category-cars.php
存在,如果不存在,它将查找category-10.php
最后是category.php
如果不存在其他模板。返回并加载找到的第一个。如果找不到这些模板,get_query_template()
返回false,并且没有为加载设置模板如果你回到这一行
elseif ( is_category() && $template = get_category_template() ) :
因为$template = get_category_template()
返回false,条件失败,只有最后一个条件返回true65 $template = get_index_template();
这是我们的最终回退,本质上是返回和加载index.php
正如你所见,如果你index.php
在您的主题或每个类别的模板中,WordPress会在每次加载页面时完成上述所有工作。因此,只有index.php
或每个类别的类别页。
由于模板加载器需要使用更多模板,因此加载时间会略微(与实际情况不相关(我们在这里讨论的是非常小的增加)受到影响,但这绝不会是一个问题(除非您有数百个模板)
。。。使用条件标记。。。。这是否会被视为不良行为?
正如我在链接答案中所述,你只需要index.php
为了在站点上显示任何页面,为了方便起见,可以使用任何其他模板。您只能index.php
如果愿意,可以使用条件标记来针对特定的页面类型。
关于这个问题,实际上没有标准,这是用户的偏好,以及模板的可读性和可维护性。如果只需要更改页面之间的标题,可以在中使用条件句index.php
, 如果需要更多更改,最好为特定页面创建特定模板。只是index.php
有数百个条件和几百行代码。这样的文件会非常混乱,由于需要检查数百个条件,加载可能需要更长的时间
如果两种方法都有效,是否会对加载速度产生任何影响?哪一个更快?
页面速度在这里真的不应该是一个问题,因为我已经在前面的所有内容中显示了这一点。选择这两个选项中的任何一个可能对页面加载时间有任何影响,也可能不会有任何影响。即使对页面加载时间有影响,差异也几乎无法衡量。
这里真正应该决定的因素是模板的可维护性和可用性,这些模板的可读性和主题的总体用户友好性,以及您的偏好和您的习惯。
我希望这能对整个问题有所启发