WordPress 核心文件功能及其载入
WordPress 中的各种功能都是通过其核心文件来完成(通过调用核心文件中的类和函数等),其核心文件都放在 WPINC(即 wp- includes)目录中,这些核心文件的用途,及其加载的顺序和位置,对我们理解 WordPress 的执行流程和架构至关重要。
注:为了是思路更加的清晰易懂,暂时不考虑后台管理相关的文件,以及多博客 / 站点相关的文件!
加载 WP 核心文件:
如下列表所示,这 42 个文件是核心文件中的核心,它们定要了 WordPress 使用的核心类和函数库,无可执行代码,只有当调用时才会执行相应的函数。这些文件都在 wp-setting.PHP 文件中依照一定的条件被加载,其功能见如下列表:
- WPINC/load.php,定义一组加载 WP 所需要的函数,无执行代码;
- WPINC/default-constants.php,定义一组函数,这些函数对那些能够被重写的常量和全局变量进行默认赋值,它们通常可以在 wp-config.php 中重新配置,无执行代码;
- WPINC/compat.php,提供某些 PHP 版本缺少的函数(用于支持不同版本 PHP 上的兼容和移植),无执行代码;
- WPINC/functions.php,定义 WP 主要的 API,无执行代码;
- WPINC/classes.php,定义 WP 主要的类,无执行代码。
- WPINC/plugin.php,定义插件 API,这些 API 用于创建 action、filter、以及钩子函数和方法,无执行代码;
- WPINC/pomo/mo.php,定义语言处理类 MO,并加载文件,无执行代码:
- WPINC/pomo/translations.php,定义对 entry 进行翻译的相关类,并加载文件,无执行代码:
- WPINC/pomo/entry.php,定义翻译实体类 Translation_Entry,无执行代码;
- WPINC/pomo/streams.php,定义一组类,用于从文件读入数据流,无执行代码。———————— 我是基本功能分割线 ————————
- WPINC/l10n.php,定义一组进行语言翻译的 API / 函数,无执行代码。
- WPINC/formatting.php,定义 WP 主要格式化 API,用于对文本、字符串、函数输出进行格式化,无执行代码;
- WPINC/query.php,定义一组 WP 的查询 API,无执行代码;
- WPINC/theme.php,定义一组主题、模板和样式表函数,无执行代码;
- WPINC/user.php,定义一组 WP 的用户 API,无执行代码;
- WPINC/meta.php,定义一组元数据 API,这些 API 用于获取和操作 WP 中各种对象类型的元数据,一个对象的元数据简单的表示为键值对,对象可能包含多个元数据实体,他们有相同的键但不同的值,无执行代码;
- WPINC/general-template.php,定义常用的模板标签,它们可以在模板中任意使用,无可执行代码;
- WPINC/link-template.php,定义一组模板中处理链接的函数(例如处理固定链接),无可执行代码;
- WPINC/author-template.php,定义一组模板中处理作者的函数,这些函数在主题中使用,并且必须出现在 WP LOOP 中,无可执行代码;
- WPINC/post-template.php,定义一组模板中处理文章的函数,用于获取 Loop 中当前文章的内容,无可执行代码;
- WPINC/category.php,定义一组 WP 的目录 API,无可执行代码;
- WPINC/category-template.php,定义一组目录的模板标签和 API,无可执行代码;
- WPINC/comment.php,定义一组 WP 的评论 API,无可执行代码;
- WPINC/comment-template.php,定义一组评论的模板标签,旨在 Loop 中有用,无可执行代码;
- WPINC/feed.php,定义一组 WP 的 Feed API,其中大部分只在 Loop 中使用,无可执行代码;
- WPINC/bookmark.php,定义一组 WP 的友情链接 / 书签 API,无可执行代码;
- WPINC/bookmark-template.php,定义一组书签的模板标签,无可执行代码;
- WPINC/cron.php,定义一组 WP 的 CRON (定时任务) API,用于进行事件调度,无可执行代码;
- WPINC/deprecated.php,一组已废弃的 API,无可执行代码;
- WPINC/class.wp-dependencies.php,定义类 WP_Dependencies 和 _WP_Dependency,用于反压脚本队列,这些类由 WP_Scripts 类和 WP 脚本队列 API 重构而来,无可执行代码;
- WPINC/class.wp-scripts.php,定义类 WP_Scripts,继承自 WP_Dependencies,功能同上,无可执行代码;
- WPINC/functions.wp-scripts.php,定义一组 WP 的脚本队列 API,功能同上,无可执行代码;
- WPINC/functions.wp-styles.php,定义一组 WP 的样式队列 API,无可执行代码。
- WPINC/taxonomy.php,定义一组 WP 的分类方法 (与目录概念不同,是在目录之上的分类) API, 无可执行代码;
- WPINC/http.php,定义一组简化和统一 http 请求的 API,无可执行代码;
- WPINC/class- http.php,定义一组简化和统一 http 请求的类 WP_Http,WP_Http_Fsockopen,WP_Http_Fopen,WP_Http_Streams,WP_Http_ExtHTTP,WP_Http_Curl,WP_HTTP_Proxy,WP_Http_Cookie,WP_Http_Encoding, 用于标准化 http 请求,处理 cookies 和 gzip 编码和解码,无可执行代码;
- WPINC/nav-menu.php,定义一组 WP 中导航菜单 API,属于 WP3.0 新添加功能,无可执行代码;
- WPINC/nav-menu-template.php,定义一组导航菜单的模板标签及 API,无可执行代码。
- WPINC/pluggable.php,这里面的函数可以被插件覆盖,如果插件没有重新定义这些函数,则这些函数将会被使用,无可执行代码;
- WPINC/pluggable-deprecated.php,被废弃的可插件覆盖函数,无可执行代码;
- WPINC/locale.php,定义日期和时间的本地化对象类 WP_Locale,无可执行代码;
- WPINC/post-thumbnail-template.php,定义一组 WP 的文章略图模板标签,无可执行代码。
至此,WP 已经加载大多数的核心文件,wp-includes 目录下未被加载的文件基本为第三方库文件、已废弃文件,或者和多博客相关的文件。他们将会在相应的函数中根据需要加载:
- atomlib.php, 在 WPINC/functions.php 中的 wp_maybe_load_widgets () 函数中加载;
- cache.php, 在 WPINC/load.php 中的 wp_start_object_cache () 函数中加载;
- class-feed.php, 在 WPINC/feed.php 中的 fetch_feed () 函数中加载;
- class-IXR.php, 在 xmlrpc.php 文件中加载;在 WPINC/comment.php 中的 pingback () 和 weblog_ping () 函数中加载;在 WPINC/functions.php 中的 do_enclose () 函数中加载;
- class-json.php, 在 WPINC/compat.php 中的 json_encode () 和 json_decode () 函数中加载;
- class-oembed.php, 在 WPINC/media.php 中的 wp_oembed_get () 和 wp_oembed_add_provider () 函数中加载;
- class-phpass.php, 在 WPINC/pluggable.php 中的 wp_hash_password () 和 wp_check_password () 函数中加载;
- class-phpmailer.php, 在 WPINC/pluggable.php 中的 wp_mail () 函数中加载;
- class-pop3.php, 在 wp-mail.php 中加载;
- class-simplepie.php, 在 WPINC/class-feed.php 中加载;
- class-smtp.php, 在 WPINC/pluggable.php 中的 wp_mail () 函数中加载;
- class-snoopy.php, 已废弃,由 http.php 文件替代;
- default-embeds.php, 在 WPINC/functions.php 中的 wp_maybe_load_embeds () 函数中加载;
- default-widgets.php, 在 WPINC/functions.php 中的 wp_maybe_load_widgets () 函数中加载;
- feed-atom.php, 在 WPINC/functions.php 中的 do_feed_atom () 函数中加载;
- feed-atom-comments.php, 在 WPINC/functions.php 中的 do_feed_atom () 函数中加载;
- feed-rdf.php, 在 WPINC/functions.php 中的 do_feed_rdf () 函数中加载;
- feed-rss2.php, 在 WPINC/functions.php 中的 do_feed_rss2 () 函数中加载;
- feed-rss2-comments.php, 在 WPINC/functions.php 中的 do_feed_rss2 () 函数中加载;
- feed-rss.php, 在 WPINC/functions.php 中的 do_feed_rss () 函数中加载;
- ms-default-constants.php, 在 WPINC/ms-setting.php 中加载;
- ms-files.php
- ms-load.php
- registration.php, 在 wp-activate.php, wp-signup.php, wp-login.php 中加载;
- registration-functions.php, 已废弃,由 registration.php 文件替代;
- rss.php, 已废弃,由 class-simplepie.php 文件替代;
- rss-functions.php, 已废弃,由 rss.php 文件替代;
- wp-db.php, 在 WPINC/functions.php 中的 require_wp_db () 函数中加载;
- wp-diff.php, 在 WPINC/functions.php 中的 wp_text_diff () 函数中加载;
- pomo/po.php, 没有被加载???
至此 WordPress 中的所有核心文件的功能及其加载顺序或位置都已明晰,我们就可以根据自己的需求对其进行修改(或添加删除),以达到自身的目的!