页面模板

页面模板是一种特定类型的模板文件可应用于特定页面或页面组的。

从WordPress 4.7开始,页面模板支持所有的帖子类型。有关如何将页面模板设置为特定帖子类型的详细信息参见下面的示例.

由于页面模板是一种特定类型的模板文件,因此以下是页面模板的一些显著特征:

  • 页面模板用于更改页面的外观。
  • 页面模板可以应用于单个页面、页面节或一类页面。
  • 页面模板通常具有较高的特异性,以单个页面或页面组为目标。例如,一个名为页面输出.php比模板文件更具体页面.php索引.php因为它只影响带有“about”段塞的页面
  • 如果页面模板有模板名称,编辑页面的WordPress用户可以控制将使用哪个模板呈现页面。

页面模板的用途

页面模板在页面上显示站点的动态内容,例如帖子、新闻更新、日历事件、媒体文件等。您可能会决定希望您的主页以特定的方式显示,这与站点的其他部分截然不同。或者,您可能希望在页面的某个部分显示链接到帖子的特色图像,在其他位置显示最新帖子的列表,并使用自定义导航。您可以使用页面模板来实现这些功能。

本节介绍如何构建页面模板,用户可以通过其管理屏幕选择这些模板。

例如,您可以为以下内容构建页面模板:

  • 全宽,单列
  • 右边有一个边栏的两栏
  • 左边有一个边栏的两栏
  • 三柱

模板层次结构中的页面模板

当一个人浏览到你的网站时,WordPress会选择用于呈现该页面的模板。正如我们早些时候在模板层次结构,WordPress按以下顺序查找模板文件:

  1. 页面模板-如果页面分配了自定义模板,WordPress会查找该文件,如果找到,就会使用它。
  2. 页面-{slug}.php —如果没有指定自定义模板,WordPress会查找并使用包含页面slug的专用模板。
  3. 页面-{id}.php —如果没有找到包含页面slug的专门模板,WordPress会查找并使用一个以页面ID命名的专门模板。
  4. 页面.php —如果没有找到包含页面ID的专门模板,WordPress会查找并使用主题的默认页面模板。
  5. 单一.php如果页面.php如果找不到,WordPress会查找并使用用于单个帖子的主题模板,而不考虑帖子类型。
  6. 索引.php —如果没有指定或找到特定的页面模板,WordPress默认使用主题的索引文件呈现页面。
还有一个WordPress定义的模板,名为页面.php。它是用于页面posttype,但用于显示多页档案。

页面模板用途和用户控件

如果你计划为你的主题制作一个自定义页面模板,你应该在继续之前决定几件事:

  • 页面模板是针对一个特定页面还是针对任何页面;
  • 您希望可用于模板的用户控件类型。

用户可以在创建或编辑页面时选择每个具有模板名称的页面模板。可用模板列表位于页面>添加新内容>属性>模板因此,WordPress用户可以选择任何带有模板名称的页面模板,这可能不是您的意图。

例如,如果您想为“关于”页面指定一个特定的模板,则将该页面模板命名为“关于模板”可能不合适,因为它将对所有页面全局可用(即用户可以将其应用于任何页面)。相反,创建一次性模板当用户访问“关于”页面时,WordPress将使用适当的模板呈现页面。

相反,许多主题都可以选择页面的列数。每个选项都是全局可用的页面模板。为了给WordPress用户提供这个全局选项,您需要为每个选项创建页面模板,并为每个选项指定一个模板名称。

通过命名文件的方式以及是否有特定注释来判断模板是全局使用还是单一使用。

有时,适当的做法是在全球范围内提供一个模板,即使它看起来只是一个用例。当你为发布创建主题时,很难预测用户会给他们的页面命名。公文包页面是一个很好的例子,因为并不是每个WordPress用户都会给他们的公文包命名相同的东西或具有相同的页面ID,但他们可能想使用该模板。

页面模板的文件组织

如中所述组织主题文件,WordPress识别子文件夹页面模板。因此,最好将全局页面模板存储在此文件夹中,以帮助它们保持有序。

专用页面模板文件(仅为一次性使用而创建的)不能位于子文件夹中,如果使用子主题,位于父主题的文件夹中。

创建供全局使用的自定义页面模板

有时您需要一个可由任何页面或多个页面全局使用的模板。一些开发人员会使用文件名前缀对模板进行分组,例如page_two-columns.php

 重要!不要使用第页-作为前缀,WordPress会将文件解释为一个专门的模板,这意味着只适用于页面。

有关主题文件命名约定和无法使用的文件名的信息,请参阅保留的主题文件名.

创建新页面模板的一种快速、安全的方法是复制页面.php并为新文件指定一个不同的文件名。这样,您可以从其他页面的HTML结构开始,然后根据需要编辑新文件。

要创建全局模板,请在文件顶部写一个打开的PHP注释,说明模板的名称。

<?php/*模板名称:示例模板*/?>

最好选择一个描述模板功能的名称,因为WordPress用户在编辑页面时可以看到该名称。例如,您可以将模板命名为Homepage、Blog或Portfolio。

这个来自Twenty14teen主题的示例创建了一个名为Full Width page的页面模板:

<?php(电话)/***模板名称:全宽页面**@package WordPress*@子包Twenty_Fourteen*@自2014年1月起*/

基本页面模板-03将文件上传到主题文件夹(例如页面模板)后,请转到页面>编辑管理仪表板中的屏幕。

在右侧下方属性你会看到的模板。这是用户可以访问全局页面模板的地方。

选择列表的最大宽度为250px,因此较长的名称可能会被截断。

为一个特定页面创建自定义页面模板

如中所述模板层次结构页面,您可以为特定页面创建模板。要为一个特定页面创建模板,请复制现有的页面.php并用页面的slug或ID重命名:

  1. 页面-{slug}.php
  2. 页面-{ID}.php

例如:您的“关于”页面有一个“关于”的段塞,ID为6。如果活动主题的文件夹中有一个名为页面浏览.php第6页.php,然后WordPress将自动查找并使用该文件呈现“关于”页面。

要使用,专用页面模板必须位于主题文件夹中(即/wp-content/themes/my-theme名称/).

为特定帖子类型创建页面模板

默认情况下,自定义页面模板将可用于“页面”帖子类型。

要为特定帖子类型创建页面模板,请在模板名称下添加一行,其中包含您希望模板支持的帖子类型。

例子:

<?php(电话)/*模板名称:全宽布局模板帖子类型:帖子、页面、事件*///此处为页面代码。。。

只有WordPress 4.7才支持将页面模板添加到“页面”帖子类型以外的帖子类型

当一个帖子类型至少存在一个模板时,“帖子属性”元框将显示在后端,无需添加对“页面属性”或其他任何帖子类型的支持。注册帖子类型时,可以使用“属性”标签为每个帖子类型定制“帖子属性”标签。

向后兼容性:

假设你想公开发布一个支持帖子类型模板的主题。WordPress 4.7之前的版本将忽略Template Post Type标题,并在页面模板列表中显示模板,即使它只适用于常规帖子。为了防止出现这种情况,可以挂接到theme_page_templates过滤器,将其从列表中排除。下面是一个示例:

/***隐藏WordPress 4.6及更早版本页面的自定义帖子模板**@param array$post_templates页面模板数组。键是文件名,值是转换的名称。*@return array页面模板的筛选数组。*/函数makewp_exclude_page_templates($post_templates){if(版本比较($GLOBALS['wp_version'],'4.7','<')){unset($post_templates['templates/my-full-width-post-template.php']);}返回$post_templates;}add_filter('theme_page_templates','makewp_exclude_page_templates');


这样,您可以支持WordPress 4.7及更高版本中的自定义帖子类型模板,同时保持完全的向后兼容性。

注意,theme_page_templates实际上是一个动态的theme_{$post_type}_template过滤器。挂钩名称的动态部分$post_type是指模板支持的post类型。例如,您可以挂接到theme_product_templates以筛选产品发布类型的模板列表。

在页面模板中使用条件标记

您可以使用条件标签在你的主题中页面.php文件。例如,下面的示例代码加载文件主机.php用于首页,但加载另一个文件(头部-关于.php),然后应用默认值页眉用于所有其他页面。

如果(is_front_page()):get_header('home');elseif(is_page('关于')):get_header(“关于”);其他:获取页眉();endif;

你可以在这里了解更多关于条件标签的信息。

识别页面模板

如果模板使用车身_类()函数,WordPress将在身体post类型类名的标记(第页),页面的ID(页面id-{id})和使用的页面模板。对于默认值页面.php,生成的类名为页面模板默认值:

<body class=“page page-id-6 page-template-default”>

专用模板(页面-{slug}.php页面-{ID}.php)还可以获得页面模板默认值类而不是它自己的主体类。

使用自定义页面模板时,类页面模板将打印,以及命名特定模板的类。例如,如果自定义页面模板文件的命名如下:

<?php(电话)/*模板名称:我的自定义页面*/?gt;

然后生成的呈现HTML如下:
<body class=“page page-id-6 page-template page-template-my-custom-page-php”>

请注意页面模板my-custom-page-php应用于身体标签。

页面模板功能

这些内置的WordPress函数和方法可以帮助您使用页面模板: