如何在子主题中覆盖父主题函数

已发表: 2022-11-01

如果您在 WordPress 中创建子主题,您可能会想要覆盖父主题中的某些功能。 在本文中,我们将向您展示如何在您的子主题中覆盖父主题函数。 首先,您需要了解 WordPress 是如何加载函数的。 当一个函数被调用时,WordPress首先在子主题中寻找它。 如果没有找到它,它会在父主题中查找。 所以,如果你想覆盖一个函数,你只需要在你的子主题中创建它。 假设您要覆盖父主题的 get_header() 函数。 您只需在子主题的 functions.php 文件中创建一个 get_header() 函数。 新函数如下所示: function get_header() { // 你的代码在这里 } 现在,当 WordPress 调用 get_header() 函数时,它将使用你的新函数而不是父主题的函数。 当然,您也可以通过简单地将它们从父主题复制到子主题来覆盖函数。 但是,我们不推荐这种方法,因为当父主题更新时,很容易忘记更新子主题中的功能。 最好使用覆盖方法,这样您就可以确保您的子主题始终使用最新版本的父主题功能。

本文将引导您了解如何覆盖 WordPress 的家长主题功能。 您可以使用三种方法之一更改函数的触发顺序,也可以完全阻止它们发生。 创建父主题时,最好为您的函数包含插件,以便在子主题中轻松修改它们。 要从父主题中删除函数,请使用 remove_action() 和 remove_filter() 方法。 根据您使用的挂钩,将确定函数的优先级。 如果函数的优先级为 20,则重写优先级为 25 的子主题将导致其行为与首次创建函数时不同。 另一方面,优先级与您如何编写新函数无关; 只需选择您想做的事情。

WordPress儿童主题的儿童主题

图片来源:https://gvtechnolab.in/how-to-create-child-theme-wordpress/

WordPress 子主题是从另一个主题(称为父主题)继承其功能的主题。 当您想要更改现有主题而不失去更新父主题的能力时,通常会使用子主题。 当子主题处于活动状态时,WordPress 将首先在子主题的目录中查找模板文件。 如果在子主题目录中找不到模板文件,WordPress 将在父主题目录中查找相同的模板文件。 这允许您覆盖父主题中的任何模板文件,而无需直接编辑父主题的文件。

WordPress 使创建网站变得简单,只需很少的 HTML、CSS 和/或 PHP 知识。 这种方法的缺点是,一旦开发者更新了主题,对其所做的任何修改都将丢失。 使用子主题是一个更好的主意,因为它允许您更改网站而无需更改主题的任何内容。 主题文件的编辑或更改取决于子主题是原生主题还是修改后的主题。 因为它只更改您指定的父主题的一部分,所以它不会复制所有内容。 为了使子主题正常运行,必须存在三样东西:文件夹、样式表和functions.php 文件。 子主题应该包括它自己的文件夹、样式表和functions.php 文件。

子主题位于 WordPress 安装的 WP-content/themes 区域,就像任何其他主题一样。 您只需要主题的名称和模板。 将其余部分严格保留以用于发布目的至关重要,因为我不这样做。 如果您使用 functions.php,您可以更改和添加功能和特性到 WordPress 网站。 创建文件就像创建样式表一样简单。 如果你不想使用 PHP 来修改主题,你可以不使用它。 如果你有一个父主题,你应该很清楚你的网站应该是什么样子。

如果你想在这里做,你必须首先获得你父主题的样式表上的信息。 CSS 和@import 规则是执行此操作的两种方法。 如果一切顺利,您的孩子主题应该看起来就像您为他或她创建的主题一样。 我们现在可以开始定制我们的主题并改变周围的事物以达到预期的结果。 有多种选项可用于自定义,我们将彻底检查每一个选项。 可以将自定义样式添加到与父主题具有相同样式层次结构的子主题中。 您使用的方法可用于对您的网站进行任意数量的更改。

保持子主题的文件夹结构与父主题的顺序相同总是一个好主意。 如果父主题中名为 page-templates 的文件包含名为 page-templates 的文件夹,您可以在子主题的目录中创建一个包含相同名称的文件夹。 我们只需将 page.php 从父主题重命名为 custom-full-width.php 以创建我们的自定义页面模板。 第一个示例是一个footer-custom.php 函数,它为页脚元素添加了一个全角类,如下所示。 现在我们只需要在下面的样式表中输入代码。 这是我们的全角页面。 尽管可能有一些润色,但我们现在应该对结果感到满意。

主题挂钩允许您自定义子主题,而无需编辑其核心文件。 您可以使用主题挂钩立即向主题添加内容,例如函数。 钩子有两种:动作钩子和过滤器钩子。 自定义功能可以通过操作挂钩添加到现有功能,而过滤功能可以修改手头的功能。 在 WordPress 中创建子主题很简单; 只需要一行代码即可。 在这种情况下,目标是在 25 主题中添加页脚功能。 如果您使用functions.php 选项,请确保您的子主题中修改后的 footer.php 文件也被删除。

儿童主题中的钩子可以扩展您孩子的艺术作品的范围。 使用子主题,我们可以完全自定义网站,而无需修改核心文件。 因此,如果您想添加主题或框架,无需从头开始编写; 您的更改不受主题更新的影响; 而且,如果出现问题,您将始终拥有一个功能主题

使用儿童主题的 3 个理由

您可能想要使用子主题有几个原因。 您可以向现有主题添加更多自定义。 如果您想自定义网站的外观,您可以使用已经具有自定义功能的主题。 如果您没有时间或知识来修改原始代码,您可以使用主题。 大多数情况下,使用子主题是获得所需结果的最便捷方式。 当您使用好的父主题时,您会注意到并理解您所做的更改。 使用儿童主题的众多优点之一是您可以创建一个特定于您孩子的主题,但它也有一些缺点。 子主题可能与您创建的其他插件、主题或可定制性发生冲突。 WordPress 的第二个问题是子主题不适用于旧版本的平台。 所有子主题并不总是与所有 WordPress 插件兼容。 使用子主题的好处远远超过使用父主题的缺点。 在发布之前,您可能仍想使用演示或尝试子主题。

如何在子主题中添加功能 PHP

图片来源:https://www.wpbeaverbuilder.com/redirect-wordpress-page/

在我们的例子中,php 只需要创建一个名为“functions”的文件,因此我们可以将它保存在我们的子主题文件夹中。 要保存位于文本编辑器中的 php-tags,请输入 PHP 开始和结束标记并将其保存为函数。 你也有选择。 第一个函数文件上传后将上传到您的子主题文件夹。

在本教程中,我们将学习如何向 WordPress 子主题添加功能。 在二十一十二主题中,我们将为帖子的元信息赋予不同的外观。 作为系列的一部分,您将在本教程中学习如何向子主题添加功能。 当我们查看 Twenty Twelve 中包含的 functions.php 文件时,我们可以看到它的标题包含一个非常有趣的行。 可插入函数被包装在这样的调用中。 仅当父主题中不存在该函数时,才会加载二十二个_nice_function(假设它存在)。 为了创建一个空文件,在我们的子主题文件夹中输入 functions.php。

在本教程中,我们将修改二十一十二主题的默认输出。 将创建一个新的部门来处理为发布元信息行生成格式化字符串的函数。 我们必须在创建 child-custom-meta div 的时候设置它的 CSS 规则。 新的functions.php文件和新的style.html文件必须上传到子主题文件夹。

如何访问您的子主题中的文件

子主题的文件夹结构允许您修改主题中的特定文件。 首先,必须在您的站点上找到子主题的文件夹。 之后,使用以下路径: br>a href=www.yourdomain.com/br>www.yourdomain.com/yourparenttheme 文件夹/br>www.yourdomain.com/yourchildtheme 文件夹/br>/a> 如果您的子主题位于sites/blog/themes/childtheme,例如,您的父主题将位于sites/blog/themes/childtheme。 确定对标头进行了更改。 例如,您可以通过访问 site/blog/themes/child-theme/header 来阅读该文件。 如果要修改整个父主题而不是子主题中的特定文件,可以使用父主题的文件夹结构访问父主题的文件。 首先,请确保您的站点上有父主题的文件夹。 以下是下一步。 www.sitename.com/ 例如,如果您的父主题位于sites/blog/themes/default,您的父主题的文件将位于那里。