/wp-settings.php

  1. <?php 
  2. /** 
  3. * Used to set up and fix common variables and include 
  4. * the WordPress procedural and class library. 
  5. * 
  6. * Allows for some configuration in wp-config.php (see default-constants.php) 
  7. * 
  8. * @package WordPress 
  9. */ 
  10.  
  11. /** 
  12. * Stores the location of the WordPress directory of functions, classes, and core content. 
  13. * 
  14. * @since 1.0.0 
  15. */ 
  16. define( 'WPINC', 'wp-includes' ); 
  17.  
  18. // Include files required for initialization. 
  19. require( ABSPATH . WPINC . '/load.php' ); 
  20. require( ABSPATH . WPINC . '/default-constants.php' ); 
  21. require_once( ABSPATH . WPINC . '/plugin.php' ); 
  22.  
  23. /** 
  24. * These can't be directly globalized in version.php. When updating,  
  25. * we're including version.php from another install and don't want 
  26. * these values to be overridden if already set. 
  27. */ 
  28. global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version, $wp_local_package; 
  29. require( ABSPATH . WPINC . '/version.php' ); 
  30.  
  31. /** 
  32. * If not already configured, `$blog_id` will default to 1 in a single site 
  33. * configuration. In multisite, it will be overridden by default in ms-settings.php. 
  34. * 
  35. * @global int $blog_id 
  36. * @since 2.0.0 
  37. */ 
  38. global $blog_id; 
  39.  
  40. // Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, SCRIPT_DEBUG, WP_CONTENT_DIR and WP_CACHE. 
  41. wp_initial_constants(); 
  42.  
  43. // Check for the required PHP version and for the MySQL extension or a database drop-in. 
  44. wp_check_php_mysql_versions(); 
  45.  
  46. // Disable magic quotes at runtime. Magic quotes are added using wpdb later in wp-settings.php. 
  47. @ini_set( 'magic_quotes_runtime', 0 ); 
  48. @ini_set( 'magic_quotes_sybase', 0 ); 
  49.  
  50. // WordPress calculates offsets from UTC. 
  51. date_default_timezone_set( 'UTC' ); 
  52.  
  53. // Turn register_globals off. 
  54. wp_unregister_GLOBALS(); 
  55.  
  56. // Standardize $_SERVER variables across setups. 
  57. wp_fix_server_vars(); 
  58.  
  59. // Check if we have received a request due to missing favicon.ico 
  60. wp_favicon_request(); 
  61.  
  62. // Check if we're in maintenance mode. 
  63. wp_maintenance(); 
  64.  
  65. // Start loading timer. 
  66. timer_start(); 
  67.  
  68. // Check if we're in WP_DEBUG mode. 
  69. wp_debug_mode(); 
  70.  
  71. /** 
  72. * Filters whether to enable loading of the advanced-cache.php drop-in. 
  73. * 
  74. * This filter runs before it can be used by plugins. It is designed for non-web 
  75. * run-times. If false is returned, advanced-cache.php will never be loaded. 
  76. * 
  77. * @since 4.6.0 
  78. * 
  79. * @param bool $enable_advanced_cache Whether to enable loading advanced-cache.php (if present). 
  80. * Default true. 
  81. */ 
  82. if ( WP_CACHE && apply_filters( 'enable_loading_advanced_cache_dropin', true ) ) { 
  83. // For an advanced caching plugin to use. Uses a static drop-in because you would only want one. 
  84. WP_DEBUG ? include( WP_CONTENT_DIR . '/advanced-cache.php' ) : @include( WP_CONTENT_DIR . '/advanced-cache.php' ); 
  85.  
  86. // Re-initialize any hooks added manually by advanced-cache.php 
  87. if ( $wp_filter ) { 
  88. $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter ); 
  89.  
  90. // Define WP_LANG_DIR if not set. 
  91. wp_set_lang_dir(); 
  92.  
  93. // Load early WordPress files. 
  94. require( ABSPATH . WPINC . '/compat.php' ); 
  95. require( ABSPATH . WPINC . '/class-wp-list-util.php' ); 
  96. require( ABSPATH . WPINC . '/functions.php' ); 
  97. require( ABSPATH . WPINC . '/class-wp-matchesmapregex.php' ); 
  98. require( ABSPATH . WPINC . '/class-wp.php' ); 
  99. require( ABSPATH . WPINC . '/class-wp-error.php' ); 
  100. require( ABSPATH . WPINC . '/pomo/mo.php' ); 
  101. require_once( ABSPATH . WPINC . '/class-phpass.php' ); 
  102.  
  103. // Include the wpdb class and, if present, a db.php database drop-in. 
  104. global $wpdb; 
  105. require_wp_db(); 
  106.  
  107. // Set the database table prefix and the format specifiers for database table columns. 
  108. $GLOBALS['table_prefix'] = $table_prefix; 
  109. wp_set_wpdb_vars(); 
  110.  
  111. // Start the WordPress object cache, or an external object cache if the drop-in is present. 
  112. wp_start_object_cache(); 
  113.  
  114. // Attach the default filters. 
  115. require( ABSPATH . WPINC . '/default-filters.php' ); 
  116.  
  117. // Initialize multisite if enabled. 
  118. if ( is_multisite() ) { 
  119. require( ABSPATH . WPINC . '/class-wp-site-query.php' ); 
  120. require( ABSPATH . WPINC . '/class-wp-network-query.php' ); 
  121. require( ABSPATH . WPINC . '/ms-blogs.php' ); 
  122. require( ABSPATH . WPINC . '/ms-settings.php' ); 
  123. } elseif ( ! defined( 'MULTISITE' ) ) { 
  124. define( 'MULTISITE', false ); 
  125.  
  126. register_shutdown_function( 'shutdown_action_hook' ); 
  127.  
  128. // Stop most of WordPress from being loaded if we just want the basics. 
  129. if ( SHORTINIT ) 
  130. return false; 
  131.  
  132. // Load the L10n library. 
  133. require_once( ABSPATH . WPINC . '/l10n.php' ); 
  134. require_once( ABSPATH . WPINC . '/class-wp-locale.php' ); 
  135. require_once( ABSPATH . WPINC . '/class-wp-locale-switcher.php' ); 
  136.  
  137. // Run the installer if WordPress is not installed. 
  138. wp_not_installed(); 
  139.  
  140. // Load most of WordPress. 
  141. require( ABSPATH . WPINC . '/class-wp-walker.php' ); 
  142. require( ABSPATH . WPINC . '/class-wp-ajax-response.php' ); 
  143. require( ABSPATH . WPINC . '/formatting.php' ); 
  144. require( ABSPATH . WPINC . '/capabilities.php' ); 
  145. require( ABSPATH . WPINC . '/class-wp-roles.php' ); 
  146. require( ABSPATH . WPINC . '/class-wp-role.php' ); 
  147. require( ABSPATH . WPINC . '/class-wp-user.php' ); 
  148. require( ABSPATH . WPINC . '/class-wp-query.php' ); 
  149. require( ABSPATH . WPINC . '/query.php' ); 
  150. require( ABSPATH . WPINC . '/date.php' ); 
  151. require( ABSPATH . WPINC . '/theme.php' ); 
  152. require( ABSPATH . WPINC . '/class-wp-theme.php' ); 
  153. require( ABSPATH . WPINC . '/template.php' ); 
  154. require( ABSPATH . WPINC . '/user.php' ); 
  155. require( ABSPATH . WPINC . '/class-wp-user-query.php' ); 
  156. require( ABSPATH . WPINC . '/class-wp-session-tokens.php' ); 
  157. require( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' ); 
  158. require( ABSPATH . WPINC . '/meta.php' ); 
  159. require( ABSPATH . WPINC . '/class-wp-meta-query.php' ); 
  160. require( ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php' ); 
  161. require( ABSPATH . WPINC . '/general-template.php' ); 
  162. require( ABSPATH . WPINC . '/link-template.php' ); 
  163. require( ABSPATH . WPINC . '/author-template.php' ); 
  164. require( ABSPATH . WPINC . '/post.php' ); 
  165. require( ABSPATH . WPINC . '/class-walker-page.php' ); 
  166. require( ABSPATH . WPINC . '/class-walker-page-dropdown.php' ); 
  167. require( ABSPATH . WPINC . '/class-wp-post-type.php' ); 
  168. require( ABSPATH . WPINC . '/class-wp-post.php' ); 
  169. require( ABSPATH . WPINC . '/post-template.php' ); 
  170. require( ABSPATH . WPINC . '/revision.php' ); 
  171. require( ABSPATH . WPINC . '/post-formats.php' ); 
  172. require( ABSPATH . WPINC . '/post-thumbnail-template.php' ); 
  173. require( ABSPATH . WPINC . '/category.php' ); 
  174. require( ABSPATH . WPINC . '/class-walker-category.php' ); 
  175. require( ABSPATH . WPINC . '/class-walker-category-dropdown.php' ); 
  176. require( ABSPATH . WPINC . '/category-template.php' ); 
  177. require( ABSPATH . WPINC . '/comment.php' ); 
  178. require( ABSPATH . WPINC . '/class-wp-comment.php' ); 
  179. require( ABSPATH . WPINC . '/class-wp-comment-query.php' ); 
  180. require( ABSPATH . WPINC . '/class-walker-comment.php' ); 
  181. require( ABSPATH . WPINC . '/comment-template.php' ); 
  182. require( ABSPATH . WPINC . '/rewrite.php' ); 
  183. require( ABSPATH . WPINC . '/class-wp-rewrite.php' ); 
  184. require( ABSPATH . WPINC . '/feed.php' ); 
  185. require( ABSPATH . WPINC . '/bookmark.php' ); 
  186. require( ABSPATH . WPINC . '/bookmark-template.php' ); 
  187. require( ABSPATH . WPINC . '/kses.php' ); 
  188. require( ABSPATH . WPINC . '/cron.php' ); 
  189. require( ABSPATH . WPINC . '/deprecated.php' ); 
  190. require( ABSPATH . WPINC . '/script-loader.php' ); 
  191. require( ABSPATH . WPINC . '/taxonomy.php' ); 
  192. require( ABSPATH . WPINC . '/class-wp-taxonomy.php' ); 
  193. require( ABSPATH . WPINC . '/class-wp-term.php' ); 
  194. require( ABSPATH . WPINC . '/class-wp-term-query.php' ); 
  195. require( ABSPATH . WPINC . '/class-wp-tax-query.php' ); 
  196. require( ABSPATH . WPINC . '/update.php' ); 
  197. require( ABSPATH . WPINC . '/canonical.php' ); 
  198. require( ABSPATH . WPINC . '/shortcodes.php' ); 
  199. require( ABSPATH . WPINC . '/embed.php' ); 
  200. require( ABSPATH . WPINC . '/class-wp-embed.php' ); 
  201. require( ABSPATH . WPINC . '/class-oembed.php' ); 
  202. require( ABSPATH . WPINC . '/class-wp-oembed-controller.php' ); 
  203. require( ABSPATH . WPINC . '/media.php' ); 
  204. require( ABSPATH . WPINC . '/http.php' ); 
  205. require( ABSPATH . WPINC . '/class-http.php' ); 
  206. require( ABSPATH . WPINC . '/class-wp-http-streams.php' ); 
  207. require( ABSPATH . WPINC . '/class-wp-http-curl.php' ); 
  208. require( ABSPATH . WPINC . '/class-wp-http-proxy.php' ); 
  209. require( ABSPATH . WPINC . '/class-wp-http-cookie.php' ); 
  210. require( ABSPATH . WPINC . '/class-wp-http-encoding.php' ); 
  211. require( ABSPATH . WPINC . '/class-wp-http-response.php' ); 
  212. require( ABSPATH . WPINC . '/class-wp-http-requests-response.php' ); 
  213. require( ABSPATH . WPINC . '/class-wp-http-requests-hooks.php' ); 
  214. require( ABSPATH . WPINC . '/widgets.php' ); 
  215. require( ABSPATH . WPINC . '/class-wp-widget.php' ); 
  216. require( ABSPATH . WPINC . '/class-wp-widget-factory.php' ); 
  217. require( ABSPATH . WPINC . '/nav-menu.php' ); 
  218. require( ABSPATH . WPINC . '/nav-menu-template.php' ); 
  219. require( ABSPATH . WPINC . '/admin-bar.php' ); 
  220. require( ABSPATH . WPINC . '/rest-api.php' ); 
  221. require( ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php' ); 
  222. require( ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php' ); 
  223. require( ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php' ); 
  224. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-controller.php' ); 
  225. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-posts-controller.php' ); 
  226. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-attachments-controller.php' ); 
  227. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-types-controller.php' ); 
  228. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-statuses-controller.php' ); 
  229. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-revisions-controller.php' ); 
  230. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-taxonomies-controller.php' ); 
  231. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-terms-controller.php' ); 
  232. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-users-controller.php' ); 
  233. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-comments-controller.php' ); 
  234. require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php' ); 
  235. require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-meta-fields.php' ); 
  236. require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-comment-meta-fields.php' ); 
  237. require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-post-meta-fields.php' ); 
  238. require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-term-meta-fields.php' ); 
  239. require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-user-meta-fields.php' ); 
  240.  
  241. $GLOBALS['wp_embed'] = new WP_Embed(); 
  242.  
  243. // Load multisite-specific files. 
  244. if ( is_multisite() ) { 
  245. require( ABSPATH . WPINC . '/ms-functions.php' ); 
  246. require( ABSPATH . WPINC . '/ms-default-filters.php' ); 
  247. require( ABSPATH . WPINC . '/ms-deprecated.php' ); 
  248.  
  249. // Define constants that rely on the API to obtain the default value. 
  250. // Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in. 
  251. wp_plugin_directory_constants(); 
  252.  
  253. $GLOBALS['wp_plugin_paths'] = array(); 
  254.  
  255. // Load must-use plugins. 
  256. foreach ( wp_get_mu_plugins() as $mu_plugin ) { 
  257. include_once( $mu_plugin ); 
  258. unset( $mu_plugin ); 
  259.  
  260. // Load network activated plugins. 
  261. if ( is_multisite() ) { 
  262. foreach ( wp_get_active_network_plugins() as $network_plugin ) { 
  263. wp_register_plugin_realpath( $network_plugin ); 
  264. include_once( $network_plugin ); 
  265. unset( $network_plugin ); 
  266.  
  267. /** 
  268. * Fires once all must-use and network-activated plugins have loaded. 
  269. * 
  270. * @since 2.8.0 
  271. */ 
  272. do_action( 'muplugins_loaded' ); 
  273.  
  274. if ( is_multisite() ) 
  275. ms_cookie_constants( ); 
  276.  
  277. // Define constants after multisite is loaded. 
  278. wp_cookie_constants(); 
  279.  
  280. // Define and enforce our SSL constants 
  281. wp_ssl_constants(); 
  282.  
  283. // Create common globals. 
  284. require( ABSPATH . WPINC . '/vars.php' ); 
  285.  
  286. // Make taxonomies and posts available to plugins and themes. 
  287. // @plugin authors: warning: these get registered again on the init hook. 
  288. create_initial_taxonomies(); 
  289. create_initial_post_types(); 
  290.  
  291. // Register the default theme directory root 
  292. register_theme_directory( get_theme_root() ); 
  293.  
  294. // Load active plugins. 
  295. foreach ( wp_get_active_and_valid_plugins() as $plugin ) { 
  296. wp_register_plugin_realpath( $plugin ); 
  297. include_once( $plugin ); 
  298. unset( $plugin ); 
  299.  
  300. // Load pluggable functions. 
  301. require( ABSPATH . WPINC . '/pluggable.php' ); 
  302. require( ABSPATH . WPINC . '/pluggable-deprecated.php' ); 
  303.  
  304. // Set internal encoding. 
  305. wp_set_internal_encoding(); 
  306.  
  307. // Run wp_cache_postload() if object cache is enabled and the function exists. 
  308. if ( WP_CACHE && function_exists( 'wp_cache_postload' ) ) 
  309. wp_cache_postload(); 
  310.  
  311. /** 
  312. * Fires once activated plugins have loaded. 
  313. * 
  314. * Pluggable functions are also available at this point in the loading order. 
  315. * 
  316. * @since 1.5.0 
  317. */ 
  318. do_action( 'plugins_loaded' ); 
  319.  
  320. // Define constants which affect functionality if not already defined. 
  321. wp_functionality_constants(); 
  322.  
  323. // Add magic quotes and set up $_REQUEST ( $_GET + $_POST ) 
  324. wp_magic_quotes(); 
  325.  
  326. /** 
  327. * Fires when comment cookies are sanitized. 
  328. * 
  329. * @since 2.0.11 
  330. */ 
  331. do_action( 'sanitize_comment_cookies' ); 
  332.  
  333. /** 
  334. * WordPress Query object 
  335. * @global WP_Query $wp_the_query 
  336. * @since 2.0.0 
  337. */ 
  338. $GLOBALS['wp_the_query'] = new WP_Query(); 
  339.  
  340. /** 
  341. * Holds the reference to @see $wp_the_query 
  342. * Use this global for WordPress queries 
  343. * @global WP_Query $wp_query 
  344. * @since 1.5.0 
  345. */ 
  346. $GLOBALS['wp_query'] = $GLOBALS['wp_the_query']; 
  347.  
  348. /** 
  349. * Holds the WordPress Rewrite object for creating pretty URLs 
  350. * @global WP_Rewrite $wp_rewrite 
  351. * @since 1.5.0 
  352. */ 
  353. $GLOBALS['wp_rewrite'] = new WP_Rewrite(); 
  354.  
  355. /** 
  356. * WordPress Object 
  357. * @global WP $wp 
  358. * @since 2.0.0 
  359. */ 
  360. $GLOBALS['wp'] = new WP(); 
  361.  
  362. /** 
  363. * WordPress Widget Factory Object 
  364. * @global WP_Widget_Factory $wp_widget_factory 
  365. * @since 2.8.0 
  366. */ 
  367. $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory(); 
  368.  
  369. /** 
  370. * WordPress User Roles 
  371. * @global WP_Roles $wp_roles 
  372. * @since 2.0.0 
  373. */ 
  374. $GLOBALS['wp_roles'] = new WP_Roles(); 
  375.  
  376. /** 
  377. * Fires before the theme is loaded. 
  378. * 
  379. * @since 2.6.0 
  380. */ 
  381. do_action( 'setup_theme' ); 
  382.  
  383. // Define the template related constants. 
  384. wp_templating_constants( ); 
  385.  
  386. // Load the default text localization domain. 
  387. load_default_textdomain(); 
  388.  
  389. $locale = get_locale(); 
  390. $locale_file = WP_LANG_DIR . "/$locale.php"; 
  391. if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) ) 
  392. require( $locale_file ); 
  393. unset( $locale_file ); 
  394.  
  395. /** 
  396. * WordPress Locale object for loading locale domain date and various strings. 
  397. * @global WP_Locale $wp_locale 
  398. * @since 2.1.0 
  399. */ 
  400. $GLOBALS['wp_locale'] = new WP_Locale(); 
  401.  
  402. /** 
  403. * WordPress Locale Switcher object for switching locales. 
  404. * 
  405. * @since 4.7.0 
  406. * 
  407. * @global WP_Locale_Switcher $wp_locale_switcher WordPress locale switcher object. 
  408. */ 
  409. $GLOBALS['wp_locale_switcher'] = new WP_Locale_Switcher(); 
  410. $GLOBALS['wp_locale_switcher']->init(); 
  411.  
  412. // Load the functions for the active theme, for both parent and child theme if applicable. 
  413. if ( ! wp_installing() || 'wp-activate.php' === $pagenow ) { 
  414. if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) ) 
  415. include( STYLESHEETPATH . '/functions.php' ); 
  416. if ( file_exists( TEMPLATEPATH . '/functions.php' ) ) 
  417. include( TEMPLATEPATH . '/functions.php' ); 
  418.  
  419. /** 
  420. * Fires after the theme is loaded. 
  421. * 
  422. * @since 3.0.0 
  423. */ 
  424. do_action( 'after_setup_theme' ); 
  425.  
  426. // Set up current user. 
  427. $GLOBALS['wp']->init(); 
  428.  
  429. /** 
  430. * Fires after WordPress has finished loading but before any headers are sent. 
  431. * 
  432. * Most of WP is loaded at this stage, and the user is authenticated. WP continues 
  433. * to load on the {@see 'init'} hook that follows (e.g. widgets), and many plugins instantiate 
  434. * themselves on it for all sorts of reasons (e.g. they need a user, a taxonomy, etc.). 
  435. * 
  436. * If you wish to plug an action once WP is loaded, use the {@see 'wp_loaded'} hook below. 
  437. * 
  438. * @since 1.5.0 
  439. */ 
  440. do_action( 'init' ); 
  441.  
  442. // Check site status 
  443. if ( is_multisite() ) { 
  444. if ( true !== ( $file = ms_site_check() ) ) { 
  445. require( $file ); 
  446. die(); 
  447. unset($file); 
  448.  
  449. /** 
  450. * This hook is fired once WP, all plugins, and the theme are fully loaded and instantiated. 
  451. * 
  452. * Ajax requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for 
  453. * users not logged in. 
  454. * 
  455. * @link https://codex.wordpress.org/AJAX_in_Plugins 
  456. * 
  457. * @since 3.0.0 
  458. */ 
  459. do_action( 'wp_loaded' ); 
.