描述:用于设置公共变量、加载 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. Baxter机器人---安装SDK包(二)

    原创博文,转载请标明出处:--周学伟http://www.cnblogs.com/zxouxuewei/ 一.frist baxter robot workspace root@zxwubuntu-A ...

  2. 工作中遇到的问题--JPA 一对多查询

    /**     *  order by gs.updateDate desc          *  SELECT gs FROM GoodStatus gs WHERE gs IN(     * @ ...

  3. Codeforces Round #141 (Div. 2)

    A. Is your horseshoe on the other hoof? 模拟题意. B. Two Tables 暴力枚举\(x,y\). C. Fractal Detector 显然,判断图形 ...

  4. scala言语基础学习七

    一.将函数赋值给变量 二.匿名函数 三.高阶函数 高阶函数好像调用不打印是看不到赋值 和普通函数区别 高阶函数的类型推断 reduce操作 相当于1*2*3*4*5*6*7*8*9 def getNa ...

  5. linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

    原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...

  6. Java——IO(输入输出流)

     *  * 想要知道开发时用到哪些数据对象,只要通过四个明确即可:  * 1.明确源,和目的:  * 源: InputStream reader  * 目的: OutPutStream Write ...

  7. 【转贴】Cortex系列M0-4简单对比

    转载网址:http://blog.sina.com.cn/s/blog_7dbd9c0e01018e4l.html 最近搞了块ST的Cortex-M4处理器,然后下了本文档.分享一下. 针对目前进入大 ...

  8. hotspot

    http://openjdk.java.net/groups/hotspot/ Source code Bundles Download Mercurial respository (read-onl ...

  9. HTML5 拖放(Drag 和 Drop)

    拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. <!DOCTYPE HTML> <html> <hea ...

  10. 在apache连接多php的时候遇到了问题,怎么切换多个php版本?

    PHP 在apache连接多php的时候遇到了问题,怎么切换多个php版本? 我的机器里面有一个apache2.2.22,但是有两个php,5.3.10和5.4.3,5.3.10是mac os x带的 ...