建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

如何创建 WordPress 子主题

GG网络技术分享 2025-03-18 16:07 40


WordPress 主题可能很棒,但有很多我们都想改变的小事情的例子。 这里的颜色,那里的字体大小,也许对按钮使用不同的号召性用语?

问题是,修改主题甚至会稍微阻止您将来将其更新到较新的版本,因为如果您尝试更新,则会丢失所有更改。

如果您正在使用 WordPress 存储库中的主题或您在 Themeforest 上购买的主题,这些主题不允许您在进行更新时使用所选主题的所有功能而不必担心丢失您的修改,那么您需要一个儿童主题。

在今天的周末 WordPress 项目中,我将解释为什么应该使用子主题以及如何完成工作。

在这篇文章中,我们将介绍:

  • 儿童主题如何运作以及为何使用它们

    • 更新
    • 组织
  • 创建子主题
  • 儿童主题力学
  • 主题制作者须知

    • 正确的目录
    • 可修改函数

注意:如果您在阅读本文后仍然无法设置子主题,请让我们提供帮助! 我们出色的支持团队可以帮助您 任何 WordPress 问题,无论大小——而且是免费的! 无论现在是什么时间或周末,我们的团队都可以 24/7 全天候待命。

儿童主题如何工作以及为什么使用它们

子主题是独立的主题,它们的大部分功能都依赖于父主题。 如果您使用的是子主题,WordPress 将首先检查您的子主题以查看是否存在特定功能。 如果没有,它将使用父主题。 这很棒,因为它允许您只修改您需要的内容。

如果您打算修改主题中的单个字符,则应始终使用子主题。 有两个很好的理由:更新和组织。

更新

如果您在不使用子主题的情况下修改主题,您有两种选择:您可以选择以后不再更新您的主题,或者您可以更新并丢失您对主题所做的任何更改。

后一种选择在技术上可行,但不推荐。 即使您的更改很容易复制和粘贴,为什么每次更新都花两分钟在一个容易出错的任务上?

不更新您的主题应该是不可能的。 几乎所有“您的网站被黑客入侵的原因”列表都包含过时的软件作为安全问题的首要原因。 您应该始终保持 WordPress、您的主题和插件是最新的,没有例外。

组织

当您将代码添加到现有主题时,您将添加到代码库中,代码库可能有成千上万行。 在您的网站上工作的开发人员(实际上是您自己)将很难跟踪您的更改。 至少一个直接结果将是增加开发费用。

由于子主题依赖于父主题,除非另有说明,因此您的子主题本质上是现有主题的变更集。 即使子主题只有几个文件并且可能只有 100 行代码,这也可能导致大量更改。

创建子主题

创建子主题非常简单,您可以在下面复制并粘贴我的示例。

要为您的主题创建子主题,您需要执行以下步骤:

  1. 在您的 WordPress 安装中创建一个主题目录
  2. 创建包含有关您的子主题的信息的样式表
  3. 拉入父主题的样式

完成这些步骤后,您可以激活您的子主题,您的网站将看起来与以前完全相同,但它将使用您的子主题。

因此,让我们详细了解上述步骤。 对于这个例子,我将为二十四默认主题创建一个子主题。

1.首先,转到您的主题目录并为您的新主题创建一个文件夹。 你可以随意命名它。 为了清楚起见,我将命名我的主题 twentyfourteen-child.

2. 下一步是创建样式表文件。 这个必须命名 style.css. 将以下代码复制并粘贴到您刚刚创建的文件中:

加载要点 614aa30ce07773030eb1

上面代码中的两个必要项是以“Theme Name" 和 ”Template。” 主题名称告诉 WordPress 您的主题名称是什么,并显示在主题选择器中。 该模板告诉 WordPress 它应该将哪个主题视为父主题。 除文本域和标签外,其他大多数都是不言自明的。 文本域用于翻译字符串。 文本域对于您的主题应该是唯一的,并且应该在您使用翻译功能时使用。 有关更多信息,请参阅面向 WordPress 开发人员的 I18n。 标签部分是 WordPress 主题存储库使用的标签列表。 对于这个例子,我查看了 style.css 父主题的文件,然后简单地从那里复制粘贴标签。

3.此时您的子主题工作正常。 如果您激活它并重新加载页面,您的所有内容都将在那里,但是它将没有样式信息。 我之前提到过,WordPress 首先在子主题中寻找功能,如果它不存在,它就会退回到父主题。

在我们的例子中,我们 有一个样式表,所以 WordPress 认为它​​不应该加载父文件。 为了确保我们加载父文件的样式表,我们需要将其加入队列。 这可以在主题的 functions.php 文件,所以现在继续创建该文件。 在此文件中,复制粘贴以下代码:

加载要点 9356aa4d1f1f897febc60d3ddfd5b484

如果您不了解 PHP,并且只想更改一些样式,请不要担心为什么会这样。 现在随意进入您的样式表文件并开始进行更改。 如果您想了解有关入队的更多信息,我们在 WPMU DEV 上为您介绍了使用入队的正确方式向 WordPress 添加脚本和样式。

儿童主题力学

那么子主题实际上是如何工作的呢? 子主题在文件级别上工作。 在加载主题的过程中使用文件时,它会检查它是否存在于子主题中。 如果是,则使用该文件的内容。 如果不是,则使用父主题中的相同文件。

此规则有一个例外,即主题的函数文件。 这 functions.php 加载父主题和子主题中的文件。 如果子主题的功能替换了父主题,则您的站点可能会出现故障,或者您需要将父主题的功能文件的全部内容复制粘贴到子主题中,这有点违背了扩展主题的目的。

修改功能时的工作流程如下。 如果要更改标题,请复制粘贴父主题的 header.php 归档到您的子主题中。 随心所欲地编辑文件,保存并享受您的劳动成果。

给主题制作者的一些注意事项

如果您制作自己的主题,您可能需要遵循一些准则,以使创建子主题更容易。 最重要的两个是学习两者之间的区别 get_stylesheet_directory()get_template_directory() 并创建可插拔功能。

正确的目录

使用上述功能链接到资产时,您应该始终注意 get_template_ 函数族将始终指向父主题的目录,而 get_stylesheet_ 函数族将始终指向子主题的目录。

加载要点 614aa30ce07773030eb1

在上面的示例中,第一个链接从父主题获取其图像,第二个链接从子主题获取它。 你应该使用哪一个没有很好的答案,这取决于你。

使用的好处 get_stylesheet_directory_uri() 是儿童主题开发人员可以通过简单地在适当的位置创建图像来使用自己的图像。 另一方面,如果图像在子主题中不存在,则根本不会显示。

这样做的原因是,如果子主题处于活动状态 get_stylesheet_directory_uri() 函数不检查(也不知道)您正在加载哪个文件,因此它不会检查它的存在,它总是会返回子主题的 URI。

可修改函数

您应该使用的另一种方法是 WordPress 所称的可插入函数。 这使得子主题作者可以覆盖您在父主题中定义的功能。 这涉及将您的函数包装在 function_exists() 检查。

假设您为名为的自定义帖子元显示创建了一个函数 my_meta(). 子主题无法修改此功能,因为它不能定义两次。 解决方案是仅在尚未定义的情况下创建此函数(请记住,首先加载子主题的函数文件)。

加载要点 614aa30ce07773030eb1

结论

使用一些非常简单的复制粘贴步骤,您可以为您的主题创建一个面向未来的环境,这将为您节省 很多 的头痛。 虽然在 WordPress 中使用内置主题编辑器可能很诱人,但如果您不使用子主题,它几乎总是会导致比解决的问题更多的问题。

花几分钟时间按照这里的教程进行操作,您的网站和开发人员会感谢您。 最后,如果您对儿童主题有任何很好的建议,请告诉我们。

标签: WordPress op

提交需求或反馈

Demand feedback