不知道WordPress的function.php文件是什么,或者你能用它做什么?
简而言之,WordPress的function.php文件为你提供了一个向你的网站添加代码段的方法。你可以以各种有用的方式使用这些代码段,所以了解function.php文件的工作方式可以帮助你建立一个更好的WordPress网站。
在本教程中,我们将深入研究WordPress函数文件。我们将讨论它的工作原理以及您可以在哪里找到它。最后,我们将向您展示一些可以对functions.php文件进行的有趣的调整。
要参与WordPress开发,您首先需要了解平台最重要的文件是如何工作的。WordPress可以很容易地开始修改您的网站。然而,可能很难知道从哪里开始——或预测您的更改实际上会做什么。
一个完美的学习场所是functions.php文件,它也被称为functions文件。这是进行更改和向WordPress添加代码的常见位置。通过编辑此文件,您可以完成一些有用的事情,例如将Google Analytics统计代码添加到您的站点、创建自定义菜单或显示文章的估计阅读时间。
- 什么是functions.php文件?
- 如何安全地使用functions.php文件?
- 更好的function.php文件替代方案
- 如何访问编辑function.php文件
- 使用WordPress函数文件的一些小Case
- 组织你的functions.php文件的最佳做法
WordPress functions.php文件是一个主题文件,你可以用它来向你的网站添加自定义代码段。你可以使用这些代码片段来修改你的网站的不同区域的功能,或添加新的内容/代码到你的网站。
尽管被包含在你的主题中,WordPress的function.php文件并不局限于对你的主题进行定制。
在WordPress Codex这样描述的功能文件:
您可以使用它来调用函数,包括PHP和内置WordPress,并定义您自己的函数。您可以通过向WordPress插件或通过WordPress主题功能文件添加代码来产生相同的结果。
简单来说,函数文件使您能够向站点添加自定义代码。它允许您以自定义方式创建新函数或引用现有函数。正如Codex指出的那样,这使得函数文件非常类似于插件,但两者之间存在一些差异。
你可以对你网站的任何部分进行调整,类似于插件的工作方式。
最重要的区别是函数文件属于特定主题。如果您要更改主题或更新到更新版本,您所做的更改将会消失。出于这个原因,您应该考虑创建一个子主题并将新代码添加到子主题的函数文件中。这样,您可以在不丢失更改的情况下更新父主题。
下面是一些你可以使用WordPress functions.php文件进行调整的常见类型:
- 改变WordPress的核心行为,例如在搜索结果页上显示多少个帖子,或者在你的网站的RSS提要中包括什么内容。
- 创建你自己的自定义短代码。
- 在您的网站上添加新的内容或脚本,例如在某些页面上注入您的即时聊天服务的脚本或编辑您网站的页脚。
- 这仅仅是表面上的东西…
因为function.php文件允许您在您的网站上添加自定义的PHP代码段,而不是静态HTML,当涉及到您可以做的修改类型时,天空是无限的。
WordPress的functions.php文件位于哪里?
WordPress的functions.php文件位于你的活动主题的文件夹中,和其他主题文件一起。要找到这个文件,你可以用FTP或文件管理器工具连接到你的服务器,然后浏览到…/wp-content/themes/[active-theme-name]/functions.php。
例如,如果你使用流行的OceanWP主题,function.php文件将位于…/wp-content/themes/oceanwp/functions.php。
是选择使用函数文件还是创建插件完全取决于您,具体取决于您的需要。现在让我们看看编辑函数文件的不同方式。
因为使用WordPress的functions.php文件涉及到向你的网站添加代码,所以在你开始做任何编辑之前,遵循一些最佳做法是很重要的。
即使是像缺少逗号或撇号这样简单的事情,也会在你的网站上引发错误,例如WordPress白屏死亡。
在最近的WordPress版本中,WordPress在以更优雅的方式处理这些错误方面已经做得更好了,比如显示 “您的网站发生了一个严重错误” 的信息,或者在保存您的修改之前检查PHP错误。
但是–为了避免任何问题的发生,我们总是建议遵循这些最佳实践…
在暂存网站上测试你的functions.php代码
在添加任何function.php代码片段到你的WordPress网站之前,我们总是建议先在你网站的暂存版本上测试它们。这可以让你检查任何潜在的错误,并验证代码片段是否按预期工作。
在进行function.php修改前备份你的网站
除了在暂存站点上进行测试之外,你还需要在将代码片段添加到你的真实站点的 functions.php 文件之前备份你的真实站点。
这是编辑任何WordPress文件时要遵循的一个很好的最佳做法。
如果代码片段出了什么问题,你可以恢复到这个备份点,让你的网站立即恢复工作。
现在大部分云服务器都提供自动备份你的网站的服务,你也可以在任何时候手动创建一个备份。如果你服务器不提供自动备份服务,你可以阅读我们关于如何备份WordPress网站的指南。
建议使用子主题编辑function.php文件
因为WordPress的function.php文件位于你的WordPress主题的代码中,当你更新你的主题时,你的主题将覆盖function.php文件。
为了避免你对主题的 functions.php 文件所做的修改被覆盖,你应该始终使用一个 WordPress 子主题,并将你的代码片段添加到子主题的 functions.php 文件中。
通过使用子主题,你仍然能够在需要的时候更新父主题,但你所有的function.php定制将不会被覆盖。
要了解更多,请查看我们关于如何创建一个WordPress子主题的完整指南。
虽然WordPress的function.php文件提供了一个简单的方法来添加代码片段到你的网站,但在大多数情况下,有一些function.php的替代品提供了一个更好的解决方案:
- 使用代码管理器插件
- 在自定义插件中存储代码片段
这些替代方案比起使用function.php文件,可以有一些优势:
- 不与你的主题捆绑 – 这意味着如果你更换了主题,你的function.php定制仍然存在。
- 更好的组织 – 这些替代方案使你更容易组织你的代码片段,如果你计划在你的网站上添加大量的代码片段,这可能是有帮助的。
- 更多的控制–在代码管理器插件的情况下,您可以获得有用的选项,如使用切换按钮启用/禁用一个代码片段,只在前端或后端运行代码片段,等等。
使用代码管理器插件
代码管理器插件是一个为你提供用户友好界面的插件,用于添加和编辑代码片段,否则这些代码片段将被放在 functions.php 文件中。
最受欢迎的选择之一是免费的Code Snippets插件,但你可以找到其他提供类似功能的插件。
有了Code Snippets,你可以从WordPress仪表板上添加你的function.php代码片段,并有完整的选项。
- 添加一个标题和描述。
- 使用标签来组织您的片段。
- 只在您网站的某个部分运行该片段。
在Code Snippets插件中添加一个代码片段
然后,您可以在一个列表中看到您的所有片段,并根据需要轻松启用/禁用它们。
如何在Code Snippets中管理片段
因为Code Snippets是一个插件,即使你更换了WordPress主题,你所有的代码片段仍然会在那里。
创建一个自定义功能插件
另一个替代WordPress的functions.php文件的方法是创建你自己的自定义插件来容纳这些代码片段。
虽然这听起来很复杂,但实际上比它看起来要简单得多。
下面是它的工作原理:
- 在你的本地计算机上为你的插件创建一个文件夹。
- 在该文件夹中创建一个单独的.php文件,用你最喜欢的文本编辑器编辑它。
- 将下面的代码模板添加到该文件中。
- 将你的 functions.php 代码片段添加到该文件中
然后,你只需要在WordPress上安装和激活该插件。这里有2种方法可以做到这一点:
- 通过FTP/SFTP连接到你的服务器,并将自定义插件文件夹上传到wp-content/plugins文件夹。然后,进入插件列表,激活该插件。
- 用你的电脑创建一个文件夹的.zip文件。然后,进入插件→安装插件,上传.zip文件,就像其他插件一样安装。
编辑函数文件就像使用标准文本编辑器(如 TextEdit 或记事本)一样简单。在开始之前,创建站点的备份并保存原始的、未经编辑的functions.php文件非常重要。这将使您能够在编辑过程中出现问题时恢复您的站点。
1. 使用WordPress编辑器
如果您有权访问 WordPress 管理界面,则可以直接从主题编辑器编辑功能文件。转到外观 > 主题编辑器。
在屏幕的右侧,您可以看到主题中包含的所有文件的列表。这些因您使用的主题而异,但最重要的选项之一应该是Theme Functions (functions.php)。只需单击该文件即可在编辑器中打开它。
现在,您可以直接编辑文件。完成后,不要忘记单击底部的更新文件以保存更改。
2. 通过FTP访问文件
如果您无法使用管理仪表板或更喜欢直接配置文件,您还可以使用FileZilla等FTP工具访问功能文件。
打开您的FTP工具并输入服务器账号信息以连接到您的站点。要找到正确的文件,请导航到wp-content/themes/[the name of your theme]。当您打开此文件夹时,您将看到functions.php文件。
您现在要做的就是使用您喜欢的文本编辑软件对其进行编辑。完成更改后,使用完全相同的名称和扩展名保存并覆盖函数文件。
您现在应该可以开始编辑您的函数文件了。为了让您开始,以下是您可以进行的各种调整的一些示例。您需要做的就是复制提供的代码片段并将它们粘贴到函数文件最底部的新行上(不要忘记保存它!)。
1. 将Google Analytics添加到您的网站
有多种方法可以将Google Analytics与您的WordPress网站集成。其中之一是将您的凭据直接添加到函数文件中。这会将分析跟踪插入您网站的标题中,确保正确捕获每次访问。
首先将以下代码粘贴到函数文件的底部:
您现在要做的就是找到您的跟踪ID并将其粘贴到包含占位符文本的行中。当您保存函数文件时,您的站点将连接到您的Google Analytics帐户。
2. 更改默认登录错误信息
默认情况下,当有人尝试登录WordPress网站失败时,他们会看到如下错误消息:
这并不理想,因为该站点正在向潜在入侵者提供有关尝试失败的原因的信息。更安全的解决方案是将其更改为通用消息。
您可以通过将以下代码添加到您的函数文件中轻松完成此操作:
看到“Something went wrong!” 第二行的消息?这是下次发生错误登录尝试时将出现的消息:
只要保留单引号字符,您就可以将其更改为您想要的任何内容。尝试使用不同的消息,看看它是如何工作的。
3. 添加文章的预计阅读时间
这个巧妙的技巧使您能够计算和显示阅读帖子所需的估计时间。然后,您的访问者可以立即大致了解内容的时长。
要实现此代码,您需要进行两次单独的编辑。第一个像往常一样对函数文件完成,您需要在其中粘贴以下代码段:
但是,这仅执行计算。您现在需要在想要显示结果的任何位置添加以下代码:
例如,您可以将其添加到每个文章旁边显示的元数据中。每个主题的构造都不同,但在二〇一七主题中,它位于template-parts > post > content.php 中。
预计阅读时间现在将出现在每个文章的标题中,并与日期一起显示。
4. 删除WordPress版本号
旧版本的WordPress可能包含恶意黑客和机器人可以利用的安全漏洞。避免这种风险的一种方法是隐藏您的网站使用的 WordPress 版本。这被称为通过默默无闻的安全。
在我们继续之前,重要的是要注意,默默无闻不应该是您唯一的安全措施。这更像是为您已经安全的WordPress堡垒添加一个额外的堡垒。
隐藏您的版本号只需要您将以下非常简单的代码片段添加到函数文件中:
现在将从您网站的所有区域中删除版本号,包括其代码和您的RSS提要。
5. 自动更新您的版权声明
更新版权声明中的年份是很容易忘记的小任务之一。你可以跟上的一种方法是使用这个技巧,它会根据你第一篇文章的发表年份自动生成版权日期。
将以下代码粘贴到您的函数文件中:
然后在要显示版权信息的任何位置添加以下代码:
您现在将在您的网站上看到动态更新的版权日期。
在本例中,我们将日期添加到footer.php文件中,以便将其显示在页面底部。
6. 添加自定义菜单
大多数主题都有预定义的导航菜单,但如果您想创建自己的菜单并将其放置在网站上的任何位置,该怎么办?您需要做的就是将此代码粘贴到您的函数文件中:
您可以将“我的自定义菜单”替换为您要为菜单命名的名称。如果您转到管理区域中的外观 > 菜单,您应该会看到列出的新选项。
您现在可以在站点的任何位置添加新菜单。
最常见的是,您需要将此代码放在header.php文件中。
7. 自定义您的摘要
摘要是您文章的简短示例描述,可以显示在您的主页或搜索结果中,而不是完整的文章内容。默认情况下,所有摘录都具有相同的长度和链接文本,但您可以更改它。
首先,让我们更改将您从摘要带到完整文章的链接的文本。这通常是“阅读更多”或“继续阅读”,但您可以通过将以下代码段粘贴到您的函数文件中来制作任何您想要的内容:
这里的链接文本已设置为Read the full article…:
然后,让我们更改摘要的长度。将此代码粘贴到您的函数文件中:
默认情况下,标准长度为55个字。在本例中,它被设置为20。您可以将数字更改为您想要的任何值。
8. 为您的网站添加随机背景
最后,让我们以一个有趣的设计技巧结束。此调整使您可以在每次有人访问网站时为您的网站随机生成新的背景颜色。首先将以下代码添加到函数文件中:
此代码为颜色生成HTML标记,因此您现在需要做的就是确保将其应用于页面。为此,您需要找到 <body> 标签,它应该如下所示:
这通常位于header.php文件中,但也可以在其他地方,具体取决于您的主题。找到正确的行后,只需将其替换为以下代码:
立即保存您的文件并打开您的网站。您应该会看到它具有新的背景颜色。
重新加载页面,您每次都会看到一种新颜色。
这显然不是每个网站的正确设计选择,但对某些网站来说这是一个巧妙的技巧。
9. 在博客文章上显示最后修改日期
默认情况下,大多数主题会显示你发布博客文章的日期。然而,如果你定期更新和刷新旧内容,你可能想同时显示最后修改日期(或用最后修改日期取代发布日期)。
这不仅让你的人类访客知道你还在更新内容,而且还向谷歌显示你的内容是新鲜的。
更多细节,请查看我们显示WordPress上最后修改日期的完整帖子。
10. 禁用某些用户的WordPress工具栏
默认情况下,WordPress为所有使用内置WordPress用户角色的登录用户显示WordPress工具栏。对于自定义的角色,例如WooCommerce商店的Customer用户角色,就不一定是这种情况。
如果你想改变这一点,你可以使用function.php代码段来隐藏某些用户角色的WordPress工具栏。
这个例子将为具有作者用户角色的用户雇用管理工具栏。
11. 延迟文章出现在RSS feed中
默认情况下,内容一经发布就会出现在你的RSS feed中。这可能会给内容抓取者一个机会,在谷歌索引你的原始文章之前,采集你的内容并将其索引到谷歌。
为了避免别人得到你的内容,你可以推迟帖子出现在你的RSS提要中。
虽然这不会完全阻止内容搜刮者,但它确实意味着你可以给谷歌一些时间来先索引你的内容。
以下是代码片段–你可以把数字–本例中的 “30”–改为你希望延迟的分钟数:
12. 从RSS feed中排除某些类别
除了延迟内容出现在RSS feed中,你也可能有这样的情况:你想排除整个类别的博客文章出现在你网站的RSS feed中。
为了达到这个目的,你可以使用下面的 functions.php 代码片段:
请确保用你想排除的实际类别ID替换示例类别ID–“38″(不要删除减号)。
下面是找到ID号的方法:
- 进入 “文章“→”分类“,看到你网站上所有类别的列表。
- 点击你想排除的类别下的编辑。
- 在你的浏览器地址栏里看一下编辑页面的URL。类别ID是?taxonomy=category&tag_ID=X后面的数字。
例如,如果URL是https://yoursite.com/wp-admin/term.php?taxonomy=category&tag_ID=38&post_type=post,那么类别ID是38。
13. 按文章类型限制WordPress的修订历史
为了避免使你的网站的数据库膨胀,你可能想限制保存多少个帖子修订。
虽然限制WordPress帖子修订的一个方法是编辑你的网站的wp-config.php文件,但你可能想为不同的帖子类型存储不同的修订数量–例如,博客帖子和WooCommerce产品。
这个function.php代码片段让你做到这一点。要使它成为你自己的,把帖子类型–本例中的 “post”–改为你想控制的实际帖子类型,把数字–本例中的 “5”–改为你想存储的修订次数。
* 注意 – 你要编辑紧接在 “if “语句之后的 “post”。例如,针对产品,这一行将看起来像这样:
14. 禁用WordPress的搜索功能
如果你的网站不需要搜索功能,你可能想禁用WordPress的搜索功能以防止潜在的滥用。
例如,即使你不在你的网站上显示一个搜索框,机器人仍然可以通过在你的URL上添加?s=[搜索词]来使用搜索功能。
要做到这一点,你可以添加以下代码段:
如果有人试图直接使用搜索功能,你的网站将返回一个404页面。
15. 创建你自己的自定义短代码
WordPress的短代码是非常方便的快捷方式,让你在你的网站上嵌入动态内容。
虽然许多WordPress插件依靠快捷键来帮助实现其功能,但您也可以使用WordPress functions.php文件和add_shortcode()函数创建您自己的自定义快捷键。
例如,一个常见的用例是创建一个显示当前年份的短码。这可以让您在所有内容中自动显示当前年份,而不需要在每年1月1日手动更新所有内容。
要创建这样一个短码,你可以使用以下代码:
然后,当您将[currentyear]短码添加到您的内容中时,它将自动被替换为实际年份–例如2023年。
16. 允许在文章标题中使用短代码
默认情况下,WordPress不会执行你放在文章标题栏里的任何短代码。如果你想在WordPress的文章标题中使用简码,你可以通过在WordPress的function.php文件中添加一个简单的代码片断来启用这个功能。
例如,当与前面的代码片段相结合时,这将让你通过添加[currentyear]短代码自动在文章标题中包括当前年份。
17. 设置WordPress分页
如果你对你的主题中的分页工作方式不满意,你可以使用function.php代码段来调整分页行为,甚至创建你自己的分页系统。
如果你对这种类型的修改感兴趣,我们有一个完整的WordPress分页指南,其中包括一些函数.php代码片段的例子。
18. 改变在搜索列表页上包含的结果数量
WordPress给了你一个仪表盘内的选项来控制在档案页上列出多少个帖子(设置→阅读)。
然而,这将改变所有存档页的数量。如果你只是想在搜索结果页面使用一个不同的数字呢?
为此,你可以在你的 functions.php 文件中添加这个片段 – 确保将数字(本例中为 “12”)改为你想在分页之前显示的实际结果数。
19. 在WordPress RSS feed中包括特色图片
如果你想在你的RSS feed内容中包括你的帖子的特色图片,你可以在你的functions.php文件中添加以下片段。
按照写法,上述代码片段将以全尺寸插入图片。要使用不同的缩略图尺寸,你可以将 “全尺寸”改为不同的缩略图尺寸–例如 “大” 或 “中”。
20. 增加对文件类型的上传支持(如SVG)
默认情况下,WordPress阻止你上传某些文件类型,例如SVG文件。
要启用对这些被阻止的文件类型的支持,你可以在WordPress functions.php文件中添加以下代码片段:
这个代码段只实现了SVG的上传,但如果需要,你可以修改它以增加对其他文件类型的支持。
21. 隐藏非管理员的WordPress更新提示
默认情况下,当有新的更新可用时,WordPress会向所有有仪表盘权限的用户显示仪表盘信息。
即使一个用户的角色不允许他们应用更新,仪表盘信息也会告诉该用户联系管理员。
为了调整这一点,你可以使用这个代码段来隐藏所有非管理员用户的更新通知:
对于其他一些变化,请查看我们关于如何禁用WordPress更新通知的指南。
22. 改变自动JPEG优化质量
尽管不是每个人都知道这个功能,WordPress在你上传图片后为你的网站创建缩略图时自动压缩JPEG图片。
从WordPress 4.5开始,WordPress已经把默认的质量级别设置为82(100为零压缩)。
如果你想使这个质量级别更高或更低,你可以在你的functions.php文件中添加以下代码片段–确保将数字(在这个例子中是 “90”)改为你想使用的实际质量级别:
如果你只是使用WordPress的functions.php文件来添加几个代码片段,你可能不需要担心组织问题。
但是,如果你在你的网站上添加了大量的代码片段,如果你不遵循一些function.php文件组织的最佳实践,它很快就会变得笨重和复杂。
这里有一些最佳实践,以保持你的代码片段的组织性…
添加代码注释来解释一切
当你第一次在 functions.php 文件中添加一个代码段时,你很清楚这个代码段的作用以及你为什么要添加它。但当你一年后回头看function.php文件时,事情可能就不那么清楚了。
为了避免这种情况,你要为每个代码段添加代码注释,解释该代码段的作用以及你为什么要添加它。
代码注释是不被WordPress执行的文本,但人类用户可以通过阅读来理解代码片段在做什么。
要添加一个单行代码注释,您可以使用这种格式:
要添加多行代码注释,你可以使用这种格式:
下面是一个如何使用代码注释的例子–你可以看到,每个代码段前的注释都解释了该代码段的作用。
一个使用代码注释来记录functions.php文件中的片段的例子
使用Include文件将片段分隔到不同的文件中
如果你真的有很多代码片段,你可以将它们存储在不同的文件中,而不是只使用functions.php文件。
然后,你可以使用include或require将这些代码片段包含在function.php文件中。Mike Schinkel在StackExchange上有一个很好的例子,说明你可以这样做。
考虑上面的function.php替代方案之一
如果你发现你的 functions.php 文件有点杂乱无章,你可能更喜欢我们前面详述的 functions.php 替代品之一。
例如,免费的Code Snippets插件可以非常容易地组织一切,因为你可以单独添加每个代码片段,并有自己的标题和描述。你还可以使用标签来组织你的代码片段。
WordPress functions.php文件是一个特定主题的文件,让你在网站上添加PHP代码片段。
如果你想在 functions.php 文件中添加代码片段,你应该始终使用一个子主题,这样当你更新你的主题时,你的改动不会被覆盖掉。我们还建议在添加代码片段之前备份您的网站,并尽可能在一个暂存网站上测试它们。
作为使用function.php文件的替代方案,你也可以考虑使用代码管理器插件或创建你自己的自定义插件来放置你的代码片段。
现在你知道了WordPress functions.php文件是如何工作的,你可以开始以各种有用的方式定制你的网站。