functions.php 文件中应包含哪些内容


描述

在本课中,您将了解到,WordPress 主题通常包含一个名为 functions.php 的文件,您可以在其中添加独特功能和自定义函数。不过,插件也用于为您的网站添加特性和功能。什么时候应该使用 functions.php 添加自定义代码,什么时候应该使用插件? 本课将帮助您理解两者之间的区别。

目标

完成本课后,您将能够:

  • 认识并了解 functions.php 与使用插件添加功能的用途差异。
  • 解释什么时候应该以及什么时候不应该使用函数。

先决技能

如果您具备以下条件,将能够更好地完成本课:

  • 具备编写主题插件的基本知识
  • 对 PHP 和 WordPress 代码有基本了解

准备情况问题

  • 您熟悉通过 WordPress 仪表盘安装和激活主题吗?
  • 您是否会有一个本地或远程托管的 WordPress 沙盒网站供课堂期间使用?
  • 您是否能够熟练使用文本编辑器编辑代码?
  • 您是否曾经向 WordPress 网站添加过自定义功能?
  • 您熟悉 WordPress 主题的文件层级结构吗?

幻灯片

  • 本课程计划没有幻灯片

所需材料

  • 本地安装的 WordPress
  • 两个或更多已安装的 WordPress 主题

给演讲者的备注

  • 让学生使用本地安装的 WordPress 副本是最简单的。如果学生需要帮助,请在课前预留一些时间协助他们在本地安装 WordPress。有关如何在本地安装 WordPress 的更多信息,请访问 在本地服务器上安装
  • 筛选问题的首选答案是“是”。如果参与者对所有问题的回答都是“否”,他们可能还没有准备好学习本课。

课程大纲

  • 介绍 functions.php 文件
  • 展示 functions.php 与插件之间的区别
  • 说明什么时候使用 functions.php 是一个好主意
  • 举例说明哪些内容应该以及不应该添加到 functions.php
  • 展示在区块主题与经典主题中实现 functions.php 的区别

练习

仅向 functions.php 添加功能。

1. 将以下代码插入当前主题的 functions.php 文件,为其添加自定义摘要长度功能:

function themename_custom_excerpt_length( $length ) { 
    return 40; //number of words in excerpt 
} 
add_filter('excerpt_length','themename_custom_excerpt_length', 99 ); 

2. 创建一篇摘要较长的测试博客文章。确认其正常工作,然后切换主题。
3. 注意,由于该功能被放置在特定主题的 functions.php 文件中,因此切换主题后该功能不再存在。

评估

以下哪项不应放在 function.php 中?

  1. 侧边栏样式
  2. 网站图标
  3. 自定义背景

答案:2. 网站图标

其他资源

课程示例

简介:什么是 functions.php 文件?

functions.php 文件用于添加、移除或以其他方式更改 WordPress 的默认行为。该文件位于主题文件夹中。functions.php 的行为类似于WordPress 插件,允许作者向 WordPress 网站添加自定义特性和功能。子主题可以拥有自己的 functions.php。但是,与 style.css 不同,子主题的 functions.php 不会覆盖父主题的 functions.php。相反,它会与父主题的 functions.php 一起加载。(在此阅读更多内容

functions.php 与插件有何不同?

由于 functions.php 和插件都允许您创建自定义功能并修改 WordPress 的默认行为,因此有时很难理解什么时候应该使用 functions.php,什么时候应该创建或使用插件来添加功能。通过更详细地了解这两种方法,您可以更好地理解每种方案在什么时候适用。一般来说,插件是可以下载并安装到 WordPress 网站上的独立模块。插件的作用是扩展 WordPress 的功能或添加新特性。激活插件不需要修改当前主题。相比之下,主题是一组用于修改 WordPress 外观的文件。虽然主题可以包含自定义功能(自定义文章类型、可视化配置面板等),但在大多数情况下,您选择主题是基于它将如何改变用户体验网站的方式。定义并区分 WordPress 插件与 functions.php 文件的基本特征如下:

WordPress 插件…

  • 需要特定且唯一的标题文本。
  • 存储在 wp-content/plugins 中,通常位于一个子目录内。
  • 只有通过“插件”面板单独激活后才会执行。
  • 适用于所有主题。
  • 应具有单一用途,例如将文章转换为页面、提供搜索引擎优化功能或帮助进行备份。

functions.php 文件…

  • 不需要唯一的标题文本。
  • 与每个主题一起存储在主题位于 wp-content/themes 中的子目录内。
  • 只有位于当前激活主题的目录中时才会执行。
  • 仅适用于该主题。如果更换主题,功能就会丢失。
  • 可以包含用于许多不同目的的多个代码块。

什么时候使用 functions.php

我们可以推断,如果自定义功能与视觉呈现相关,就应该放在 functions.php 中;如果与网站的行为方式相关,就应该存储在插件中。不过,从技术上讲,也可以将视觉呈现自定义项存储在插件中,那么我们该如何判断哪种方式更好?答案出人意料地简单。我们需要问自己的问题是:该功能是否应该与某个特定主题绑定?由于 functions.php 位于主题文件夹中,因此该主题必须处于激活状态,自定义功能才能正常工作。但是,如果将此类自定义功能存储在插件中,您就可以切换主题,同时保留自定义功能。因此,确定如何添加自定义代码的最佳方式,是判断该功能是否特定于某个主题,或者该功能是否支持网站的内容或结构,而不受启用何种主题的影响。例如,您可能希望根据特定主题的设计和布局,为该主题中的文章设置独特的摘要长度,因此应将摘要功能添加到 functions.php 中。如果您希望无论使用哪个主题,都为所有文章实现“阅读更多”链接,则应将此功能添加为插件。

可以放入 functions.php 的内容:

  • 内容格式
  • 特定于主题的页眉和页脚功能
  • 用于更改输出的 WordPress 钩子,例如使用 excerpt_length 筛选器更改文章摘要的长度
  • 启用主题对文章缩略图、文章格式和导航菜单支持的代码
  • 希望在多个主题模板文件中重复使用的函数

不应放入 functions.php 的内容:

  • 与 SEO 相关的功能
  • Google Analytics 脚本
  • 自定义文章类型和分类法

在区块主题与经典主题中实现 functions.php

经典 WordPress 主题要求开发者为主题添加对 WordPress 功能的支持。经典主题中的典型 functions.php 文件会包含一个用于设置主题支持的函数,该函数使用 add_theme_support() 函数(也称为“主题支持”)。

在区块主题中,某些主题支持默认启用,无需明确启用。此外,当您在区块主题的 theme.json 文件中加入设置时,也可以启用某些主题支持。theme.json 中的设置优先于通过 add_theme_support() 添加的功能。例如,在 theme.json 中加入 settings.layout 设置将启用 align-wide 主题支持。

💡 接下来按照上文列出的练习评估进行操作。