选项2是最佳选项。要知道原因,需要看看template loader.
(template hierarchy 如果您不知道它的真正工作原理或来源,则毫无意义
if ( defined(\'WP_USE_THEMES\') && WP_USE_THEMES ) :
59 $template = false;
60 if ( is_404() && $template = get_404_template() ) :
61 elseif ( is_search() && $template = get_search_template() ) :
62 elseif ( is_front_page() && $template = get_front_page_template() ) :
63 elseif ( is_home() && $template = get_home_template() ) :
64 elseif ( is_post_type_archive() && $template = get_post_type_archive_template() ) :
65 elseif ( is_tax() && $template = get_taxonomy_template() ) :
66 elseif ( is_attachment() && $template = get_attachment_template() ) :
67 remove_filter(\'the_content\', \'prepend_attachment\');
68 elseif ( is_single() && $template = get_single_template() ) :
69 elseif ( is_page() && $template = get_page_template() ) :
70 elseif ( is_singular() && $template = get_singular_template() ) :
71 elseif ( is_category() && $template = get_category_template() ) :
72 elseif ( is_tag() && $template = get_tag_template() ) :
73 elseif ( is_author() && $template = get_author_template() ) :
74 elseif ( is_date() && $template = get_date_template() ) :
75 elseif ( is_archive() && $template = get_archive_template() ) :
76 elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
77 elseif ( is_paged() && $template = get_paged_template() ) :
78 else :
79 $template = get_index_template();
80 endif;
此模板加载器在前端的每个页面加载上都会运行。如您所见,WordPress遍历了一个列表,并根据所请求的页面验证条件。让我们以类别页面为例,类别为未分类的类别。
if/else语句执行第一个返回true的条件,在类别页面上,它将是is_category()
条件语句。此语句执行get_category_template()
并对该声明进行评估。如果此语句也为true(有效的类别页可用),则将根据找到的内容加载模板,如果此语句返回false,则模板加载程序将继续查找下一个true语句,稍后我将处理该语句。
内部发生了什么get_category_template()
这很重要。该函数根据所请求的类别页面创建三个模板名称。例如,以下内容按顺序创建:,category-uncategorized.php
, category-1.php
和category.php
. 此模板名称存储在数组中,并传递给get_query_template()
. 这是一个函数,其任务是搜索传递给它的模板名称,并返回存在和可用的第一个模板。这是用locate_template()
.
这是说,WordPress(实际上locate_template()
如果您想获得技术支持,请首先查找category-uncategorized.php
, 如果找到,则返回并加载模板。如果未找到,WordPress将继续尝试category-1.php
如果失败了,最后会尝试category.php
. 如我所说,如果没有找到,我们的
elseif ( is_category() && $template = get_category_template()
条件返回false,并计算进一步的条件。下一个条件是
is_archive()
(记住,
is_archive()
在类别、标记、分类、自定义帖子类型存档、作者和日期相关页面上返回true。与上述过程相同,但这次使用
archive.php
正在查找和加载(如果存在)。如果
archive.php
不存在,整个条件语句的值为加载的默认值
index.php
通过
get_index_template()
. 这是每个页面的最终回退
结论和最终答案category.php
将导致很大的开销,但事实并非如此。到那时index.php
已加载到您的类别页面上,(让我们再次使用我们的示例)对于未分类的类别,WordPress已经查看并尝试加载category-uncategorized.php
, category-1.php
, category.php
和archive.php
. 因此,继续使用您的“最好拥有”模板(所有模板除外index.php
(哪个是你的OPTION 2). 拥有10个很好的模板比index.php
它和尼罗河一样长,比阿尔伯特·爱因斯坦大脑中的东西更有逻辑OPTION 1)
回到选项1,让模板尽可能简短、可维护和可读也是非常重要的。拥有一个模板是毫无用处的,它可能会快0.0000001秒,但维护起来却一团糟,真是一场噩梦。
最后,选项2的pro比选项1多得多。