首页 / 主题开发手册 / 经典主题 / 链接主题文件和目录

链接主题文件和目录

链接到核心主题文件

正如你已经了解到的,WordPress主题是由一些不同的模板文件构建的。至少,这通常包括sidebar.php、header.php和footer.php。这些都是用模板标签来调用的,比如说:

你可以创建自定义版本,也可以通过命名文件sidebar-{your_custom_template}.php、header-{your_custom_template}.php和footer-{your_custom_template}.php调用这些文件。然后你可以使用模板标签,将自定义模板名称作为唯一参数,像这样:

get_header( 'your_custom_template' );
get_footer( 'your_custom_template' );
get_sidebar( 'your_custom_template' );

WordPress通过组合各种文件来创建页面。除了页眉、页脚和边栏的标准文件外,你可以创建自定义模板文件,并在页面的任何位置使用get_template_part()来调用它们。要在你的主题中创建一个自定义的模板文件,给这个文件一个合适的名字,并使用与页眉、边栏和页脚文件相同的自定义模板系统。

slug-template.php

例如,如果你想创建一个自定义的模板来处理你的文章内容,你可以创建一个模板文件叫content.php,然后通过扩展文件名为content-product.php来为产品内容添加一个特定的内容布局。然后你可以像下面这样在你的主题中加载这个模板文件:

get_template_part( 'content', 'product' );

如果你想给你的模板添加更多的组织,你可以把它们放在你的主题目录中自己的目录里。例如,假设你为个人资料和地点增加了几个内容模板,并将它们归入自己的目录,称为content-templates。

你的主题 "my-theme "的层次结构可能看起来像下面这样。style.css和page.php被包含在背景中。

  • themes
  • my-theme
  • content-templates
  • content-location.php
  • content-product.php
  • content-profile.php
  • style.css

要引入你的内容模板,请在slug参数前加上目录名称,像这样:

get_template_part( 'content-templates/content', 'location' );
get_template_part( 'content-templates/content', 'product' );
get_template_part( 'content-templates/content', 'profile' );

 

链接到主题目录

要链接到主题的目录,你可以使用以下函数:

如果你没有使用子主题,这个函数将返回你主题主文件夹的完整URI。你可以用它来引用你的主题中的子文件夹和文件,像这样:

echo get_theme_file_uri( 'images/logo.png' );

如果你使用的是子主题,那么这个函数将返回子主题中文件的URI,如果它存在的话。如果在你的子主题中找不到该文件,该函数将返回父主题中该文件的URI。在分发主题或其他任何情况下,子主题可能会或可能不会被激活,这一点特别重要,要牢记在心。

要访问你主题目录中文件的路径,你可以使用以下函数:

get_theme_file_uri()一样,这个函数将访问子主题中的文件路径,如果它存在的话。如果在子主题中找不到该文件,该函数将访问父主题中的文件路径。

在子主题中,你可以使用以下函数链接到父主题目录中的文件URI或路径:

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

echo get_parent_theme_file_uri( 'images/logo.png' );
//or
echo get_parent_theme_file_path( 'images/logo.png' );

在引用可能不存在的文件时要注意,因为这些函数将返回URI或文件路径,无论文件是否存在。如果文件丢失,这些函数将返回一个断裂的链接。

函数 get_theme_file_uri(), get_theme_file_path(), get_parent_theme_file_uri(), get_parent_theme_file_path() 是在WordPress 4.7中引入的。

对于以前的WordPress版本,使用 get_template_directory_uri(), get_template_directory(), get_stylesheet_directory_uri(), get_stylesheet_directory().

请注意,较新的4.7函数无论如何都会运行旧版的函数,作为检查过程的一部分,所以尽可能使用较新的函数是有意义的。

 

模板中的动态链接

无论你的固定链接设置如何,你都可以通过引用一个页面或文章的唯一数字ID(在管理界面的几个页面中可以看到)来动态链接到该页面或文章

<a href="<?php echo get_permalink($ID); ?>">This is a link</a>

这是一种创建页面菜单的方便方法,因为你以后可以在不破坏链接的情况下改变页面标题,因为ID将保持不变。然而,这可能会增加数据库查询。