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,定义一组类,用于从文件读入数据流,无执行代码。
至此,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中的所有核心文件的功能及其加载顺序或位置都已明晰,我们就可以根据自己的需求对其进行修改(或添加删除),以达到自身的目的!