为什么主题模板被组织为多个入口点的PHP文件,而不是重用主题的index.php?

时间:2011-11-01 作者:chamberlainpi

在过去的几周里,我已经开始开发自己的主题(并在过去的一年中在这里和那里提取WP功能),我发现WP模板的结构非常冗余。

虽然是的,但从技术上讲,博客从更高的地方开始加载WP功能、主要的WP\\U查询对象和一些全局变量准备-我不明白为什么我遇到的每个主题都会将模板文件拆分为:

404。php

  • 搜索。php
  • 。。。etc

    有一个(1)不是更干净吗index.php 包含Header, Sidebar, Footer... 并且在index.php 文件-您可以决定如何显示内容?

    我不确定我是否理解需要有单独的文件。

    如果您需要更改<head> tag,为什么不使用output-buffering (ob_start()ob_end_clean())要首先获取帖子/页面/单个帖子/搜索结果。。。使用此技术是否存在性能问题?

    如果我想做我的主题,我会遇到问题吗mobile-friendly, 并且可读RSS feed readers?

    -------------- EDIT:

    我之所以提出这个问题,是因为有一些PHP方法可以检测用户正在访问哪个部分(例如:is_single(), is_page(), is_archive(), is_home(), 等等……)我想知道这些是否可以用来实现我的index.php 文件

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

    主题模板文件是以这种方式组织的,因为WordPress Template Hierarchy. 因为所有主模板文件最终都会回退到index.php, 当然可以只使用index.php 主模板文件。使用这两种方法都有优点和缺点。

    一般来说,定义模板文件的有用性/效率与主题的上下文复杂性成反比。如果主题输出没有根据模板层次结构中定义的上下文进行更改,则仅使用index.php 文件非常有意义。然而,仅使用基于查询的条件模板标记(例如。is_single(), is_archive(), is_category(), is_404(), 等)内部index.php.

    然而,这是一个坏主意:

    如果您需要更改<head> tag,为什么不使用output-buffering (ob_start()ob_end_clean())要首先获取帖子/页面/单个帖子/搜索结果。。。使用此技术是否存在性能问题?

    不需要输出缓冲。应使用以下方法之一:

    the_title 要更换的过滤器挂钩wp_title() 上下文输出将上下文定义的变量直接传递给wp_title() 模板标签

    SO网友:Mehmet

    实际上,您可以使用单个索引。php创建WordPress主题。你所需要的只是一种风格。css和索引。php(以及页脚和页眉)这一切都取决于主题开发人员。我做了很多旧式经典阵营设计,但今天,在设计复杂的CMS和杂志主题时;根据使用不同的文件WordPress Template Hierarchy 让事情变得简单多了。

    对于不熟悉PHP函数但擅长CSS/XHTML的新手来说,定制变得更加容易。

    结束

    相关推荐

    URL Design for Sub-Posts?

    我目前有:mysite.com/product-name mysite.com/another-product 等,其中产品名称和其他产品是帖子。然后,我有一个名为Changelogs的自定义帖子类型,我为每个产品都有这个类型,是否可以有类似以下内容的url:mysite.com/product-name/changelog mysite.com/another-product/changelog 如果是的话,我该怎么做呢?