WordPress 系统初始化 Settings 文件解析-核心功能

2018-07-04 0 By admin

wp-seeting.php 用于设置公共变量、加载 WP 的程序和类库(存储 WP 函数、类和核心内容所在文件夹的位置)。用户无需修改此文件,但是可以通过修改 wp-config.php 文件来进行配置。
WordPress 系统初始化过程中分为加载核心功能和加载辅助功能;通过 SHORTINIT 常量控制,默认值为 false,即 WordPress 系统初始化过程默认加载核心功能和辅助功能。

一、核心功能加载

  1. 定义 WPINC 常量,并引入初始化所需文件:
    1. WPINC/load.php,定义一组加载 WP 所需要的函数,无执行代码;
    2. WPINC/default-constants.php,定义一组函数,这些函数对那些能够被重写的常量和全局变量进行默认赋值,它们通常可以在 wp-config.php 中重新配置,无执行代码;
    3. WPINC/version.php,定义版本相关变量,对这些变量进行赋值。
  2. 调用 wp_initial_constants() 函数,初始化常量 WP_MEMORY_LIMIT, WP_DEBUG, WP_CONTENT_DIR 和 WP_CACHE。
  3. 关闭运行期的魔术引用,魔术引用稍后将在 wp-settings.php 中通过 wpdb 添加。
  4. 设置 PHP5 的默认时区。
  5. 调用 wp_unregister_GLOBALS() 函数关闭 register_globals。
  6. unset 全局变量 $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate,以确保他们不会存在。
  7. 调用函数 wp_fix_server_vars() 规范 $_SERVER 变量设置。
  8. 调用函数 wp_check_php_mysql_versions() 检查所需的 PHP 版本和 MySQL 扩展或数据库 drop-in。
  9. 调用函数 wp_favicon_request() 检查是否收到由于缺少 favicon.ico 的而产生请求。
  10. 检查是否处于维护模式。
  11. 开启加载计时器。
  12. 检查是否处于 WP_DEBUG 模式。
  13. 根据 WP_CACHE 和 WP_DEBUG 常量判断是否载入以及以何种方式载入文件:
    1. WP_CONTENT_DIR/advanced-cache.php,属于drop-in,供高级的缓存插件使用。
  14. 调用 wp_set_lang_dir() 函数设置常量 WP_LANG_DIR。
  15. 加载WP文件:
    1. WPINC/compat.php,提供某些 PHP 版本缺少的函数(用于支持不同版本 PHP 上的兼容和移植),无执行代码;
    2. WPINC/functions.php,定义 WP 主要的 API,无执行代码;
    3. WPINC/classes.php,定义 WP 主要的类,无执行代码。
  16. 调用 require_wp_db() 函数,引入 wpdb 类,或者数据库 drop-in db.php (如果存在的话)。
  17. 调用 wp_set_wpdb_vars() 函数,设置数据库表前缀和数据库表列的格式说明符
  18. 调用 wp_start_object_cache() 函数,开启WP对象缓存,或者扩展对象缓存(如果相应 drop-in 存在的话)。
  19. 加载WP文件:
    1. WPINC/plugin.php,定义插件 API,这些 API 用于创建 action、filter、以及钩子函数和方法,无执行代码;
    2. WPINC/default-filters.php,为 WP 中的钩子设置默认的 action 和 filter;
    3. WPINC/pomo/mo.php,定义语言处理类 MO,并加载文件,无执行代码:
      • WPINC/pomo/translations.php,定义对 entry 进行翻译的相关类,并加载文件,无执行代码:
        • WPINC/pomo/entry.php,定义翻译实体类 Translation_Entry,无执行代码;
      • WPINC/pomo/streams.php,定义一组类,用于从文件读入数据流,无执行代码。
  20. 如果开启了多站点,则加载文件;否则设置常量 MULTISITE 为 false:
    1. WPINC/ms-blogs.php,定义一组 Site/blog 函数,用于操作 blogs 表及相关数据;
    2. WPINC/ms-settings.php(涉及多站点的文件暂不考虑)。