原始的WordPress模板结构有哪些优势?

时间:2012-04-06 作者:simple

Precondition: 来自一个定制的PHP应用程序(使用symfony、zend等)世界,对我来说,以原始wordpress主题中的方式分离模板感觉很不自然。e、 g页面的顶部位于页眉,中间位于“索引,页面…”和页脚的底部。

当前结构示例:索引。php

[include header]
... main content...
[include footer]
和标题。php

<html>
    <head>
      ....
    </head>
    <body>
      .....
和页脚。php

       .....
   </body>
</html>
我更习惯于你有一个布局并在其中包含其他(部分)模板的结构。示例:索引。php模板

    <html>
      <head> [include header] </head> 
      <body> 
          [include body] [include    footer] 
      </body> 
    </html>
所以,我试图思考原始wordpress模板结构的优点。

Question: 与我上面描述的第二个示例相比,原始wordpress模板结构有哪些优点?

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

首先,正如@Toscho所暗示的get_header()get_footer() 模板标记只包括名为header.phpfooter.php, 分别地这两个模板标签都是从模板文件中调用的,您可以在模板文件之间分隔内容(index.php) 和模板零件文件(header.php, footer.php) 你想怎么都行。因此,WordPress当然可以适应后面的例子。

也就是说,标准中分离内容的“WordPress”方法的真正威力来自WordPress Template Hierarchy. 在WordPress中index.php 文件实际上是使用的最后一个模板文件。当找不到其他更具体的模板文件时,它是默认的回退模板文件:

WordPress Template Hierarchy

由于将使用7个(主要)到16个(次要)模板文件中的任何一个(这仅适用于公开发布的主题;自定义设计的主题可以有任意数量的模板文件),这取决于当前的上下文,“WordPress”标记分离方法将使重复代码的数量最小化。

假设您想要将doctype从transitional更改为strict(或者您想要移动到HTML5),或者您想要更改站点页脚中的版权声明。使用标记分离的“WordPress”方法,可以在一个文件中进行这些更改。使用后一种内容分离方法,您可以进行这些更改seven to sixteen (or more) 《泰晤士报》。

编辑我想这个问题会出现:

我想听听你对以下情况的看法。假设我们需要包含“og标记(Open Graph meta tags)”,它们的“index”、“single.php”、“page”、“archive”模板的格式不同。如果我们有一个类似“原始wp主题结构”的结构,那么我们必须在“header.php”文件中使用条件语句(If..else),对吗?我认为每个人都同意“条件语句”越少,每个请求的性能越好,对吗?

我们有几种选择:

直接在内部使用PHP查询条件header.phpwp_head (或wp_enqueue_scripts, 等)使用get_header( $context ), 哪里$context 基于模板层次结构,其中包括header-$context.php 如果发现,或header.php 如果未找到但多个选项并不能真正解决性能影响的根本问题。就个人而言,我认为性能影响可以忽略不计,因为所有查询条件都是作为查询对象缓存的一部分缓存的。因此,调用它们真的不应该导致任何有意义的性能损失。

SO网友:fuxia

没有矛盾,两者都可以使用。

示例

<!doctype html>
<html <?php language_attributes(); ?>>
  <head>
    <?php get_header(); ?>
  </head>
  <body>
    <?php get_template_part( \'content\', get_post_format() ); ?>
    <?php get_footer(); ?>
  </body>
</html>
WordPress系统的优点是:您可以根据需要自由构建模板。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register