做 WordPress 二次开发时,经常会遇到这样的困惑:想找某个系统函数的定义文件,翻来翻去找不到;自己写的自定义函数,不知道该放在哪个文件夹才规范。其实 WordPress 的函数分布有明确的规律,核心就三类:系统自带的核心函数、主题相关函数、插件专属函数。今天就用通俗的话,把这些函数的“藏身之处”讲清楚,方便大家日常开发、排查问题。
一、系统自带的核心函数:藏在 wp-includes 目录
核心函数是 WordPress 运行的“地基”,比如处理数据库连接、用户登录、文章查询这些基础功能,都靠这些函数支撑。它们的核心存放目录是 WordPress 根目录下的 wp-includes 文件夹,这是所有核心函数的“大本营”。
1. 最常用的基础核心文件
这几个文件是开发中最常接触的,记准位置能少走很多弯路:
wp-includes/functions.php:基础通用工具库,比如数据格式化、判断当前环境、字符串处理这些通用功能,都在这里定义;wp-includes/pluggable.php:比较特殊的核心文件,里面的函数支持被主题或插件覆盖(比如用户登录验证、密码重置这些函数),这是唯一能被自定义代码覆盖的核心函数文件,其他核心文件千万别乱改;wp-includes/general-template.php:模板相关的通用函数,比如获取站点标题、调用用户头像、渲染导航菜单这些前端常用的功能,都在这里。
2. 按功能分类的核心文件
除了基础文件,核心函数还按功能拆分成了专门的文件,方便维护,比如:
- 数据库操作:
wp-includes/wp-db.php,所有和数据库交互的功能(增删改查)都靠这个文件; - 用户相关:
wp-includes/user.php,用户注册、登录、权限判断、个人信息修改这些功能的函数都在这里; - 文章/页面相关:
wp-includes/post.php,发布文章、编辑页面、获取自定义字段这些操作的核心函数都在这; - 插件/主题管理:
wp-includes/plugin.php(插件激活、停用、钩子管理)、wp-includes/theme.php(主题加载、模板选择); - 网络请求:
wp-includes/class-http.php,处理 HTTP 请求(比如调用第三方接口)的函数都在这里。
3. 后台专属核心函数
如果是开发后台相关功能(比如自定义后台页面、修改后台编辑逻辑),要找的函数在 wp-admin/includes 目录下。比如 wp-admin/includes/admin.php 负责后台页面的基础渲染,wp-admin/includes/post.php 是后台文章编辑相关的函数。
二、主题相关函数:主题目录的 functions.php 是核心
主题相关的函数是我们最常自定义的部分,不管是修改主题样式逻辑、添加自定义菜单,还是注册侧边栏,都要和这部分函数打交道,位置也很固定。
每个主题的根目录下,都有一个 functions.php 文件,路径通常是 wp-content/themes/你的主题名称/functions.php。这是主题的“核心配置文件”,我们写的自定义函数(比如全局变量定义、自定义短代码、加载自定义脚本),都可以直接放在这里。
如果是比较复杂的主题,开发者通常会把函数按功能拆分到子目录(比如 inc/ 或 functions/),再通过 include 或 require 语句引入到主 functions.php 中。比如把自定义文章类型的函数放在 inc/custom-post-type.php,再在 functions.php 里写 include 'inc/custom-post-type.php'; 就能生效。
这里提醒下:修改主题函数时,建议先备份原文件;如果是用别人的主题,最好通过子主题的 functions.php 写自定义函数,避免主题更新后自定义代码丢失。
三、插件专属函数:对应插件的独立目录
插件的函数都是插件开发者自定义的,专门服务于插件的功能,存放位置也很明确——每个插件都有自己的独立目录,就在 wp-content/plugins/ 下。
比如你安装了一个叫“Hello Dolly”的插件,它的目录就是 wp-content/plugins/hello-dolly/,插件的核心函数通常放在目录下的主文件中(比如 hello-dolly.php)。
复杂一点的插件,会和复杂主题一样,把函数按功能拆分到子目录(比如 includes/ 存放核心逻辑、admin/ 存放后台相关函数、public/ 存放前端相关函数)。比如电商类插件,会把支付相关的函数放在 includes/payment.php,订单相关的放在 includes/order.php,再通过主文件引入这些子文件。
最后总结:快速找函数的核心逻辑
记不住具体路径也没关系,记住这三个核心逻辑就能快速定位:
- 找系统基础功能(数据库、用户、文章)的函数,先去
wp-includes/目录;找后台相关的,去wp-admin/includes/; - 自己写自定义函数,优先放在当前主题(或子主题)的
functions.php,复杂逻辑就拆分到主题的inc/子目录; - 找某个插件的函数,直接去
wp-content/plugins/对应插件目录/,先看主文件,再看includes/子目录。
另外再强调下:核心目录(wp-includes/、wp-admin/)里的文件千万别随便修改,一旦 WordPress 升级,修改的内容会全部丢失。所有自定义需求,优先通过主题(子主题)或插件实现。