描述:用于设置公共变量、加载 WP 的程序和类库(存储 WP 函数、类和核心内容所在文件夹的位置)。用户无需修改此文件,但是可以通过修改 wp-config.php 文件来进行配置。

    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(涉及多站点的文件暂不考虑)。

————如果只需要基本功能(即 SHORTINIT 常量为真),则 wp-setting.php 文件执行到此即返回!————

  1. 加载 l18n 库:
    1. WPINC/l10n.php,定义一组进行语言翻译的 API/函数,无执行代码。
  2. 调用 wp_not_installed() 函数,如果还没有安装 WP,则启动安装程序。
  3. 加载 WP 的*大头(most of WP)*,一共33个文件:
    1. WPINC/formatting.php,定义 WP 主要格式化API,用于对文本、字符串、函数输出进行格式化,无执行代码;
    2. WPINC/capabilities.php,定义一组类WP_Roles, WP_Role, WP_User和函数,用于操作角色和权限;
    3. WPINC/query.php,定义一组 WP 的查询 API,无执行代码;
    4. WPINC/theme.php,定义一组主题、模板和样式表函数,无执行代码;
    5. WPINC/user.php,定义一组 WP 的用户 API,无执行代码;
    6. WPINC/meta.php,定义一组元数据 API,这些 API 用于获取和操作 WP 中各种对象类型的元数据,一个对象的元数据简单的表示为键值对,对象可能包含多个元数据实体,他们有相同的键但不同的值,无执行代码;
    7. WPINC/general-template.php,定义常用的模板标签,它们可以在模板中任意使用,无可执行代码;
    8. WPINC/link-template.php,定义一组模板中处理链接的函数(例如处理固定链接),无可执行代码;
    9. WPINC/author-template.php,定义一组模板中处理作者的函数,这些函数在主题中使用,并且必须出现在 WP LOOP 中,无可执行代码;
    10. WPINC/post.php,定义一组文章相关的函数,并添加 add_action( ‘init’, ‘create_initial_post_types’, 0 );
    11. WPINC/post-template.php,定义一组模板中处理文章的函数,用于获取 Loop 中当前文章的内容,无可执行代码;
    12. WPINC/category.php,定义一组 WP 的目录 API,无可执行代码;
    13. WPINC/category-template.php,定义一组目录的模板标签和 API,无可执行代码;
    14. WPINC/comment.php,定义一组 WP 的评论 API,无可执行代码;
    15. WPINC/comment-template.php,定义一组评论的模板标签,旨在 Loop 中有用,无可执行代码;
    16. WPINC/rewrite.php,定义一组 WP 的重写 API 以及 WP_Rewrite 类,用于重写链接的格式;并且该文件还定义了一组常量 EP_NONE,EP_PERMALINK,EP_ATTACHMENT,EP_DATE,EP_YEAR,EP_MONTH,EP_DAY,EP_ROOT,EP_COMMENTS,EP_SEARCH,EP_CATEGORIES,EP_TAGS,EP_AUTHORS,EP_PAGES,EP_ALL;
    17. WPINC/feed.php,定义一组 WP 的 Feed API,其中大部分只在 Loop 中使用,无可执行代码;
    18. WPINC/bookmark.php,定义一组 WP 的友情链接/书签 API,无可执行代码;
    19. WPINC/bookmark-template.php,定义一组书签的模板标签,无可执行代码;
    20. WPINC/kses.php,定义一组 HTML/XHTML 的过滤器 API,并定义一组标签数组,添加了两个action:add_action(‘init’, ‘kses_init’);add_action(‘set_current_user’, ‘kses_init’);
    21. WPINC/cron.php,定义一组 WP 的 CRON(定时任务) API,用于进行事件调度,无可执行代码;
    22. WPIN/deprecated.php,一组已废弃的 API,无可执行代码;
    23. WPINC/script-loader.php,WP 中脚本和样式表的默认加载器 API,并加载了如下文件:
      • /class.wp-dependencies.php,定义类 WP_Dependencies 和 _WP_Dependency,用于反压脚本队列,这些类由 WP_Scripts类和 WP 脚本队列 API 重构而来,无可执行代码;
      • /class.wp-scripts.php,定义类 WP_Scripts,继承自 WP_Dependencies,功能同上,无可执行代码;
      • /functions.wp-scripts.php,定义一组 WP 的脚本队列 API,功能同上,无可执行代码;
      • /class.wp-styles.php,定义类 WP_Styles,继承自 WP_Dependencies,用于反压样式表队列;
      • /functions.wp-styles.php,定义一组 WP 的样式队列 API,无可执行代码。

      并添加了如下的 action 和 filter:

      • add_action( ‘wp_default_scripts’, ‘wp_default_scripts’ );
      • add_filter( ‘wp_print_scripts’, ‘wp_just_in_time_script_localization’ );
      • add_filter( ‘print_scripts_array’, ‘wp_prototype_before_jquery’ );
      • add_action( ‘wp_default_styles’, ‘wp_default_styles’ );
      • add_filter( ‘style_loader_src’, ‘wp_style_loader_src’, 10, 2 );
    24. WPINC/taxonomy.php,定义一组 WP 的分类方法(与目录概念不同,是在目录之上的分类) API, 无可执行代码;
    25. WPINC/update.php,定义一组 API 用于检查版本升级信息,添加了一组action,并进行事件调度:
      • add_action( ‘admin_init’, ‘_maybe_update_core’ );
      • add_action( ‘wp_version_check’, ‘wp_version_check’ );
      • add_action( ‘load-plugins.php’, ‘wp_update_plugins’ );
      • add_action( ‘load-update.php’, ‘wp_update_plugins’ );
      • add_action( ‘load-update-core.php’, ‘wp_update_plugins’ );
      • add_action( ‘admin_init’, ‘_maybe_update_plugins’ );
      • add_action( ‘wp_update_plugins’, ‘wp_update_plugins’ );
      • add_action( ‘load-themes.php’, ‘wp_update_themes’ );
      • add_action( ‘load-update.php’, ‘wp_update_themes’ );
      • add_action( ‘load-update-core.php’, ‘wp_update_themes’ );
      • add_action( ‘admin_init’, ‘_maybe_update_themes’ );
      • add_action( ‘wp_update_themes’, ‘wp_update_themes’ );
    26. WPINC/canonical.php,定义一组重定向规范函数,用于处理 WP 中重定向,并添加 action:
      • add_action(‘template_redirect’, ‘redirect_canonical’);
    27. WPINC/shortcodes.php,定义一组 WP 的简码 API,并定义数组 $shortcode_tags,添加 filter:
      • add_filter(‘the_content’, ‘do_shortcode’, 11);
    28. WPINC/media.php,定义一组媒体(视频、图片等)显示相关的 API 和类 WP_Embed,并创建 $wp_embed = new WP_Embed() 变量,添加简码:
      • add_shortcode(‘wp_caption’, ‘img_caption_shortcode’);
      • add_shortcode(‘caption’, ‘img_caption_shortcode’);
      • add_shortcode(‘gallery’, ‘gallery_shortcode’);
    29. WPINC/http.php,定义一组简化和统一 http 请求的 API,无可执行代码;
    30. 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 编码和解码,无可执行代码;
    31. WPINC/widgets.php,定义一组创建动态侧边栏的 API 和类 WP_Widget,WP_Widget_Factory,并定义了一组全局变量;
    32. WPINC/nav-menu.php,定义一组 WP 中导航菜单 API,属于 WP3.0 新添加功能,无可执行代码;
    33. WPINC/nav-menu-template.php,定义一组导航菜单的模板标签及 API,无可执行代码。
  4. 加载多站点特定文件:
    1. WPINC/ms-functions.php,
    2. WPINC/ms-default-filters.php,
    3. WPINC/ms-deprecated.php。
  5. 调用 wp_plugin_directory_constants() 函数,定义依赖于API获取默认值的常量,定义必须使用的插件文件夹常量,后者可能会在 sunrise.php drop-in 中被覆盖。
  6. 利用函数 wp_get_mu_plugins() 加载必须使用的插件,并触发挂载点 do_action( ‘muplugins_loaded’ );
  7. 调用函数 ms_cookie_constants() 为多站点设置 cookie 常量。
  8. 调用函数 wp_cookie_constants() 在多站点加载后定义常量,cookie 相关的常量可能会在 ms_network_cookies() 中被覆盖。
  9. 调用函数 wp_ssl_constants() 定义和执行 SSL 常量。
  10. 加载文件创建公共全局变量:
    1. WPINC/vars.php,为 WP 的剩余部分创建公共变量。
  11. 调用函数 create_initial_taxonomies() 和 create_initial_post_types() 使分类和文章对插件和主题可见。插件作者需要注意:这些在初始化 hook 时会被再次注册。
  12. 利用函数 wp_get_active_and_valid_plugins() 加载已激活的插件。
  13. 加载 pluggable 的函数库文件:
    1. WPINC/pluggable.php,这里面的函数可以被插件覆盖,如果插件没有重新定义这些函数,则这些函数将会被使用,无可执行代码;
    2. WPINC/pluggable-deprecated.php,被废弃的可插件覆盖函数,无可执行代码。
  14. 调用函数 wp_set_internal_encoding() 设置内部编码。
  15. 如果 WP_CACHE 开启并且 wp_cache_postload() 函数存在,则调用该函数。
  16. 触发挂载点 do_action( ‘plugins_loaded’ )。
  17. 调用函数 wp_functionality_constants() 定义那些尚未被定义但会影响功能的常量。
  18. 调用函数 wp_magic_quotes() 添加魔术引用并装配 $_REQUEST ( $_GET + $_POST )。
  19. 触发挂载点 do_action( ‘sanitize_comment_cookies’ )(无害的评论 cookie)。
  20. 创建全局的WP查询对象 $wp_the_query =& new WP_Query(),并保存 $wp_the_query 的引用到 $wp_query,使用 $wp_query 进行查询。
  21. 创建 WP 的重写对象 $wp_rewrite =& new WP_Rewrite(),以创建漂亮的 URLs。
  22. 创建WP对象 $wp =& new WP()。
  23. 创建 WP Widget 工厂对象 $wp_widget_factory =& new WP_Widget_Factory()。
  24. 触发挂载点 do_action( ‘setup_theme’ )。
  25. 调用函数 wp_templating_constants() 设置模板相关常量。
  26. 调用函数 load_default_textdomain() 加载默认的文本本地化域。
  27. 找到博客区域设置 $locale = get_locale()。
  28. 加载完文本域后,载入本地化数据:
    1. WPINC/locale.php,定义日期和时间的本地化对象类 WP_Locale,无可执行代码。
  29. 创建本地化对象 $wp_locale =& new WP_Locale() 用以加载本地化域数据和各种字符串。
  30. 加载激活的主题的函数库文件:
    1. TEMPLATEPATH/functions.php,加载模板自带函数。
  31. 触发挂载点 do_action( ‘after_setup_theme’ )。
  32. 调用函数 require_if_theme_supports() 加载主题支持的所有函数。
  33. 注册关闭函数 register_shutdown_function( ‘shutdown_action_hook’ )。
  34. 建立当前用户 $wp->init()。
  35. 触发挂载点 do_action( ‘init’ ),在这个阶段WP 的大部分已被加载,用户也已认证。WP 会继续加载 init 钩子上的挂载者,如widgets和各种插件实例。如果你想在WP加载后插入一个action,请使用下面的 wp_loaded 钩子。
  36. 如果是多站点,则检查站点的状态。
  37. 触发挂载点 do_action(‘wp_loaded’),当WP、所有插件以及主题都被完全加载和实例化后,该钩子将被解除。Ajax请求应该使用 wp-admin/admin-ajax.php,admin-ajax.php 能够处理未登录用户的请求。

黄聪:wp-setting.php文件详解的更多相关文章

  1. Maven setting.xml文件详解(转)

    maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用户的目录:${user.home}/.m2/setting ...

  2. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  3. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  4. SUBLIME TEXT 2 设置文件详解

    SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...

  5. Linux中/proc目录下文件详解(转贴)

      转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...

  6. vue-cli生成的模板各个文件详解(转)

    vue-cli脚手架中webpack配置基础文件详解 一.前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是构建vue单页应用的脚手架 ...

  7. 【maven学习】pom.xml文件详解

    环境 apache-maven-3.6.1 jdk 1.8 eclipse 4.7 POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示, ...

  8. MyBatis 映射文件详解(六)

    MyBatis 配置文件类型 MyBatis配置文件有两种类型,如下: 全局配置文件(如 mybatis-config.xml) Mapper XML 映射文件(如 UserMapper.xml) 上 ...

  9. web.xml文件详解

      web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...

随机推荐

  1. SQLServer如何用T—SQL命令查询一个数据库中有哪些表

    1.查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执 ...

  2. c++将引用作为函数的参数---6

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量别名.这种传递参数 的方法称为按引用传递. ...

  3. oracle锁机制

    1 前言 数据库大并发操作要考虑死锁和锁的性能问题.看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据 库执行请求,T2代表另一个请求,也可以理解为T1为 ...

  4. 全国信息学奥林匹克联赛(NOIP2014)复赛 模拟题Day2 长乐一中

    题目名称 改造二叉树 数字对 交换 英文名称 binary pair swap 输入文件名 binary.in pair.in swap.in 输出文件名 binary.out pair.out sw ...

  5. 通过UserAgent判断智能手机(设备,Android,IOS)

    转:http://free0007.iteye.com/blog/2017329 /// 根据 Agent 判断是否是智能手机 ///</summary> ///<returns&g ...

  6. Android项目——网络图片查看器

    效果-=-------------->加入包 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  7. 【转】完美解除Windows7的驱动程序强制签名限制

    原文网址:http://nick.txtcc.com/index.php/nocategory/290 Windows 7很J,很多驱动程序都无法安装,因为Windows 7不像Vista,必须要求所 ...

  8. JSBinding + SharpKit / 安装SharpKit以及添加SharpKit工程

    本文说明如何往 sln 中添加 SharpKit 工程,以及配置. SharpKit 工程用于将 C# 源代码编译成 JS  代码. QQ群 189738580 1. 安装SharpKit 到 sha ...

  9. php pdo错误:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

    原因:在使用execute()执行时没有传对应prepare()设置的参数

  10. [unity3d程序] 颜色渐变效果

    研究了下,颜色变化时遵从RGB圆环(就是说颜色条对接一下成环)路径最小变化原则.举个例子,加入ABCDE四个颜色点,并且A和E在同一点(转了一圈)设定从A变化到C的话,有两种路径,一种ABC,还一种A ...