连接主题文件和目录

连接核心主题文件

如你所知,WordPress主题是由许多不同的主题模板组成的。这至少应该包括sidebar.php,header.php以及footer.php。可以通过模板标签来调用这些文件,例如:

你可以通过命名文件sidebar-{your_custom_template}.php,header-{your_custom_template}.php以及footer-{your_custom_template}.php来创建这些文件的自定义版本。你可以使用模板标签并传入自定义模板文件的名称来调用它,如下所示:

WordPress通过组合不同的文件来创建页面。除了header,footer和sidebar这些常规文件外,你可以创建自定义模板文件并且通过get_template_part()在页面的任何位置来调用它们。若要在主题中自定义模板文件,请为文件指定合适的名称,并使用与header、sidebar和footer相同的自定义模板系统。

  • slug-template.php

例如,如果你想创建自定义模板处理你的文章内容,你可以创建一个content.php的模板文件,然后通过扩展的文件名称为content-product.php的文件给文章类型为product定义内容布局。接下来你就可以在你的主题中用下面的方式来调用这个模板:

如果你想更好的组织你的模板,你可以把他们归类到主题中相应的目录里。例如,假如你又增加了profile和location两个内容模板,并把它们归类到content-templates文件夹中。

为了引入内容模板,你需要将目录名称写在模板slug的前面,如下所示:

连接主题目录

为了连接主题目录,你可以使用下面的函数:

如果你没有使用子主题,这个函数会返回你的主题文件夹的完整url。你可以像下面这样引用你的子文件夹和文件:

如果你在子主题中使用这个函数,并且这个文件在子主题中存在,那么他将返回子主题文件的url。如果这个文件在子主题中不存在,函数会返回父主题此文件的url。

为了获取主题目录的文件路径,你可以使用下面的函数:

和get_theme_file_uri()一样,如果在子主题中存在则返回文件在子主题中的路径。如果在子主题中找不到该文件,则函数返回父主题文件的路径。

在子主题中,你可以使用下面的函数来连接父主题目录的url或路径:

和get_theme_file_uri()一样,你可以像下面这样来引用子文件夹和文件:

注意当引用不存在的文件时,不管文件存在与否这个函数会始终返回url和文件路径。如果文件丢失,这个函数会返回一个无法打开的链接。

WordPress 4.7中引入了get_theme_file_uri(),get_theme_file_path(),get_parent_theme_file_uri(),get_parent_theme_file_path()这些函数。

如果使用先前版本的WordPress,请使用get_template_directory_uri()get_template_directory()get_stylesheet_directory_uri()get_stylesheet_directory()

注意,4.7版本的函数会调用之前的函数进行处理,因此尽可能使用新的函数。

模板中的动态链接

不管你是怎样设置固定链接的,你可以通过页面或文章的唯一ID来动态的链接到它们。

通过这种方式你可以很方便的创建页面菜单,即使你改变了页面的别名也不会破坏这个链接,因为页面的ID会一直保持不变。然而,这会增加数据库的查询。

本文翻译自Linking Theme Files & Directories

 

 

相关文章

发表评论