[ Index ]

PHP Cross Reference of Wordpress 2.9.1

title

Body

[close]

/ -> wp-settings.php (source)

   1  <?php
   2  /**
   3   * Used to setup and fix common variables and include
   4   * the WordPress procedural and class library.
   5   *
   6   * You should not have to change this file and allows
   7   * for some configuration in wp-config.php.
   8   *
   9   * @package WordPress
  10   */
  11  
  12  if ( !defined('WP_MEMORY_LIMIT') )
  13      define('WP_MEMORY_LIMIT', '32M');
  14  
  15  if ( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < abs(intval(WP_MEMORY_LIMIT)) ) )
  16      @ini_set('memory_limit', WP_MEMORY_LIMIT);
  17  
  18  set_magic_quotes_runtime(0);
  19  @ini_set('magic_quotes_sybase', 0);
  20  
  21  if ( function_exists('date_default_timezone_set') )
  22      date_default_timezone_set('UTC');
  23  
  24  /**
  25   * Turn register globals off.
  26   *
  27   * @access private
  28   * @since 2.1.0
  29   * @return null Will return null if register_globals PHP directive was disabled
  30   */
  31  function wp_unregister_GLOBALS() {
  32      if ( !ini_get('register_globals') )
  33          return;
  34  
  35      if ( isset($_REQUEST['GLOBALS']) )
  36          die('GLOBALS overwrite attempt detected');
  37  
  38      // Variables that shouldn't be unset
  39      $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix');
  40  
  41      $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
  42      foreach ( $input as $k => $v )
  43          if ( !in_array($k, $noUnset) && isset($GLOBALS[$k]) ) {
  44              $GLOBALS[$k] = NULL;
  45              unset($GLOBALS[$k]);
  46          }
  47  }
  48  
  49  wp_unregister_GLOBALS();
  50  
  51  unset( $wp_filter, $cache_lastcommentmodified, $cache_lastpostdate );
  52  
  53  /**
  54   * The $blog_id global, which you can change in the config allows you to create a simple
  55   * multiple blog installation using just one WordPress and changing $blog_id around.
  56   *
  57   * @global int $blog_id
  58   * @since 2.0.0
  59   */
  60  if ( ! isset($blog_id) )
  61      $blog_id = 1;
  62  
  63  // Fix for IIS when running with PHP ISAPI
  64  if ( empty( $_SERVER['REQUEST_URI'] ) || ( php_sapi_name() != 'cgi-fcgi' && preg_match( '/^Microsoft-IIS\//', $_SERVER['SERVER_SOFTWARE'] ) ) ) {
  65  
  66      // IIS Mod-Rewrite
  67      if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
  68          $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
  69      }
  70      // IIS Isapi_Rewrite
  71      else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
  72          $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
  73      }
  74      else
  75      {
  76          // Use ORIG_PATH_INFO if there is no PATH_INFO
  77          if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
  78              $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
  79  
  80          // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
  81          if ( isset($_SERVER['PATH_INFO']) ) {
  82              if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
  83                  $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
  84              else
  85                  $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
  86          }
  87  
  88          // Append the query string if it exists and isn't null
  89          if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
  90              $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
  91          }
  92      }
  93  }
  94  
  95  // Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests
  96  if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) )
  97      $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
  98  
  99  // Fix for Dreamhost and other PHP as CGI hosts
 100  if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false)
 101      unset($_SERVER['PATH_INFO']);
 102  
 103  // Fix empty PHP_SELF
 104  $PHP_SELF = $_SERVER['PHP_SELF'];
 105  if ( empty($PHP_SELF) )
 106      $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]);
 107  
 108  if ( version_compare( '4.3', phpversion(), '>' ) ) {
 109      die( sprintf( /*WP_I18N_OLD_PHP*/'Your server is running PHP version %s but WordPress requires at least 4.3.'/*/WP_I18N_OLD_PHP*/, phpversion() ) );
 110  }
 111  
 112  if ( !defined('WP_CONTENT_DIR') )
 113      define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
 114  
 115  if ( file_exists(ABSPATH . '.maintenance') && !defined('WP_INSTALLING') ) {
 116      include(ABSPATH . '.maintenance');
 117      // If the $upgrading timestamp is older than 10 minutes, don't die.
 118      if ( ( time() - $upgrading ) < 600 ) {
 119          if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
 120              require_once( WP_CONTENT_DIR . '/maintenance.php' );
 121              die();
 122          }
 123  
 124          $protocol = $_SERVER["SERVER_PROTOCOL"];
 125          if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
 126              $protocol = 'HTTP/1.0';
 127          header( "$protocol 503 Service Unavailable", true, 503 );
 128          header( 'Content-Type: text/html; charset=utf-8' );
 129          header( 'Retry-After: 600' );
 130  ?>
 131  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 132  <html xmlns="http://www.w3.org/1999/xhtml">
 133  <head>
 134  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 135      <title>Maintenance</title>
 136  
 137  </head>
 138  <body>
 139      <h1>Briefly unavailable for scheduled maintenance. Check back in a minute.</h1>
 140  </body>
 141  </html>
 142  <?php
 143          die();
 144      }
 145  }
 146  
 147  if ( !extension_loaded('mysql') && !file_exists(WP_CONTENT_DIR . '/db.php') )
 148      die( /*WP_I18N_OLD_MYSQL*/'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.'/*/WP_I18N_OLD_MYSQL*/ );
 149  
 150  /**
 151   * PHP 4 standard microtime start capture.
 152   *
 153   * @access private
 154   * @since 0.71
 155   * @global int $timestart Seconds and Microseconds added together from when function is called.
 156   * @return bool Always returns true.
 157   */
 158  function timer_start() {
 159      global $timestart;
 160      $mtime = explode(' ', microtime() );
 161      $mtime = $mtime[1] + $mtime[0];
 162      $timestart = $mtime;
 163      return true;
 164  }
 165  
 166  /**
 167   * Return and/or display the time from the page start to when function is called.
 168   *
 169   * You can get the results and print them by doing:
 170   * <code>
 171   * $nTimePageTookToExecute = timer_stop();
 172   * echo $nTimePageTookToExecute;
 173   * </code>
 174   *
 175   * Or instead, you can do:
 176   * <code>
 177   * timer_stop(1);
 178   * </code>
 179   * which will do what the above does. If you need the result, you can assign it to a variable, but
 180   * most cases, you only need to echo it.
 181   *
 182   * @since 0.71
 183   * @global int $timestart Seconds and Microseconds added together from when timer_start() is called
 184   * @global int $timeend  Seconds and Microseconds added together from when function is called
 185   *
 186   * @param int $display Use '0' or null to not echo anything and 1 to echo the total time
 187   * @param int $precision The amount of digits from the right of the decimal to display. Default is 3.
 188   * @return float The "second.microsecond" finished time calculation
 189   */
 190  function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(1), will echo $timetotal
 191      global $timestart, $timeend;
 192      $mtime = microtime();
 193      $mtime = explode(' ',$mtime);
 194      $mtime = $mtime[1] + $mtime[0];
 195      $timeend = $mtime;
 196      $timetotal = $timeend-$timestart;
 197      $r = ( function_exists('number_format_i18n') ) ? number_format_i18n($timetotal, $precision) : number_format($timetotal, $precision);
 198      if ( $display )
 199          echo $r;
 200      return $r;
 201  }
 202  timer_start();
 203  
 204  // Add define('WP_DEBUG', true); to wp-config.php to enable display of notices during development.
 205  if ( defined('WP_DEBUG') && WP_DEBUG ) {
 206      if ( defined('E_DEPRECATED') )
 207          error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
 208      else
 209          error_reporting(E_ALL);
 210      // Add define('WP_DEBUG_DISPLAY', false); to wp-config.php to use the globally configured setting for display_errors and not force it to On
 211      if ( ! defined('WP_DEBUG_DISPLAY') || WP_DEBUG_DISPLAY )
 212          ini_set('display_errors', 1);
 213      // Add define('WP_DEBUG_LOG', true); to enable php debug logging to WP_CONTENT_DIR/debug.log
 214      if ( defined('WP_DEBUG_LOG') && WP_DEBUG_LOG ) {
 215          ini_set('log_errors', 1);
 216          ini_set('error_log', WP_CONTENT_DIR . '/debug.log');
 217      }
 218  } else {
 219      define('WP_DEBUG', false);
 220      if ( defined('E_RECOVERABLE_ERROR') )
 221          error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
 222      else
 223          error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
 224  }
 225  
 226  // For an advanced caching plugin to use, static because you would only want one
 227  if ( defined('WP_CACHE') && WP_CACHE )
 228      @include WP_CONTENT_DIR . '/advanced-cache.php';
 229  
 230  /**
 231   * Private
 232   */ 
 233  if ( !defined('MEDIA_TRASH') )
 234      define('MEDIA_TRASH', false);
 235  
 236  /**
 237   * Stores the location of the WordPress directory of functions, classes, and core content.
 238   *
 239   * @since 1.0.0
 240   */
 241  define('WPINC', 'wp-includes');
 242  
 243  if ( !defined('WP_LANG_DIR') ) {
 244      /**
 245       * Stores the location of the language directory. First looks for language folder in WP_CONTENT_DIR
 246       * and uses that folder if it exists. Or it uses the "languages" folder in WPINC.
 247       *
 248       * @since 2.1.0
 249       */
 250      if ( file_exists(WP_CONTENT_DIR . '/languages') && @is_dir(WP_CONTENT_DIR . '/languages') ) {
 251          define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
 252          if (!defined('LANGDIR')) {
 253              // Old static relative path maintained for limited backwards compatibility - won't work in some cases
 254              define('LANGDIR', 'wp-content/languages');
 255          }
 256      } else {
 257          define('WP_LANG_DIR', ABSPATH . WPINC . '/languages'); // no leading slash, no trailing slash, full path, not relative to ABSPATH
 258          if (!defined('LANGDIR')) {
 259              // Old relative path maintained for backwards compatibility
 260              define('LANGDIR', WPINC . '/languages');
 261          }
 262      }
 263  }
 264  
 265  require (ABSPATH . WPINC . '/compat.php');
 266  require (ABSPATH . WPINC . '/functions.php');
 267  require (ABSPATH . WPINC . '/classes.php');
 268  
 269  require_wp_db();
 270  
 271  if ( !empty($wpdb->error) )
 272      dead_db();
 273  
 274  /**
 275   * Format specifiers for DB columns. Columns not listed here default to %s.
 276   * @since 2.8.0
 277   * @see wpdb:$field_types
 278   * @see wpdb:prepare()
 279   * @see wpdb:insert()
 280   * @see wpdb:update()
 281   */
 282  $wpdb->field_types = array( 'post_author' => '%d', 'post_parent' => '%d', 'menu_order' => '%d', 'term_id' => '%d', 'term_group' => '%d', 'term_taxonomy_id' => '%d',
 283      'parent' => '%d', 'count' => '%d','object_id' => '%d', 'term_order' => '%d', 'ID' => '%d', 'commment_ID' => '%d', 'comment_post_ID' => '%d', 'comment_parent' => '%d',
 284      'user_id' => '%d', 'link_id' => '%d', 'link_owner' => '%d', 'link_rating' => '%d', 'option_id' => '%d', 'blog_id' => '%d', 'meta_id' => '%d', 'post_id' => '%d',
 285      'user_status' => '%d', 'umeta_id' => '%d', 'comment_karma' => '%d', 'comment_count' => '%d');
 286  
 287  $prefix = $wpdb->set_prefix($table_prefix);
 288  
 289  if ( is_wp_error($prefix) )
 290      wp_die(/*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/);
 291  
 292  /**
 293   * Copy an object.
 294   *
 295   * Returns a cloned copy of an object.
 296   *
 297   * @since 2.7.0
 298   *
 299   * @param object $object The object to clone
 300   * @return object The cloned object
 301   */
 302  function wp_clone( $object ) {
 303      static $can_clone;
 304      if ( !isset( $can_clone ) ) {
 305          $can_clone = version_compare( phpversion(), '5.0', '>=' );
 306      }
 307      return $can_clone ? clone( $object ) : $object;
 308  }
 309  
 310  /**
 311   * Whether the current request is in WordPress admin Panel
 312   *
 313   * Does not inform on whether the user is an admin! Use capability checks to
 314   * tell if the user should be accessing a section or not.
 315   *
 316   * @since 1.5.1
 317   *
 318   * @return bool True if inside WordPress administration pages.
 319   */
 320  function is_admin() {
 321      if ( defined('WP_ADMIN') )
 322          return WP_ADMIN;
 323      return false;
 324  }
 325  
 326  if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
 327      require_once (WP_CONTENT_DIR . '/object-cache.php');
 328      $_wp_using_ext_object_cache = true;
 329  } else {
 330      require_once (ABSPATH . WPINC . '/cache.php');
 331      $_wp_using_ext_object_cache = false;
 332  }
 333  
 334  wp_cache_init();
 335  if ( function_exists('wp_cache_add_global_groups') ) {
 336      wp_cache_add_global_groups(array ('users', 'userlogins', 'usermeta', 'site-transient'));
 337      wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));
 338  }
 339  
 340  require (ABSPATH . WPINC . '/plugin.php');
 341  require (ABSPATH . WPINC . '/default-filters.php');
 342  include_once(ABSPATH . WPINC . '/pomo/mo.php');
 343  require_once (ABSPATH . WPINC . '/l10n.php');
 344  
 345  if ( !is_blog_installed() && (strpos($_SERVER['PHP_SELF'], 'install.php') === false && !defined('WP_INSTALLING')) ) {
 346      if ( defined('WP_SITEURL') )
 347          $link = WP_SITEURL . '/wp-admin/install.php';
 348      elseif (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false)
 349          $link = preg_replace('|/wp-admin/?.*?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
 350      else
 351          $link = preg_replace('|/[^/]+?$|', '/', $_SERVER['PHP_SELF']) . 'wp-admin/install.php';
 352      require_once(ABSPATH . WPINC . '/kses.php');
 353      require_once(ABSPATH . WPINC . '/pluggable.php');
 354      require_once(ABSPATH . WPINC . '/formatting.php');
 355      wp_redirect($link);
 356      die(); // have to die here ~ Mark
 357  }
 358  
 359  require (ABSPATH . WPINC . '/formatting.php');
 360  require (ABSPATH . WPINC . '/capabilities.php');
 361  require (ABSPATH . WPINC . '/query.php');
 362  require (ABSPATH . WPINC . '/theme.php');
 363  require (ABSPATH . WPINC . '/user.php');
 364  require (ABSPATH . WPINC . '/meta.php');
 365  require (ABSPATH . WPINC . '/general-template.php');
 366  require (ABSPATH . WPINC . '/link-template.php');
 367  require (ABSPATH . WPINC . '/author-template.php');
 368  require (ABSPATH . WPINC . '/post.php');
 369  require (ABSPATH . WPINC . '/post-template.php');
 370  require (ABSPATH . WPINC . '/category.php');
 371  require (ABSPATH . WPINC . '/category-template.php');
 372  require (ABSPATH . WPINC . '/comment.php');
 373  require (ABSPATH . WPINC . '/comment-template.php');
 374  require (ABSPATH . WPINC . '/rewrite.php');
 375  require (ABSPATH . WPINC . '/feed.php');
 376  require (ABSPATH . WPINC . '/bookmark.php');
 377  require (ABSPATH . WPINC . '/bookmark-template.php');
 378  require (ABSPATH . WPINC . '/kses.php');
 379  require (ABSPATH . WPINC . '/cron.php');
 380  require (ABSPATH . WPINC . '/version.php');
 381  require (ABSPATH . WPINC . '/deprecated.php');
 382  require (ABSPATH . WPINC . '/script-loader.php');
 383  require (ABSPATH . WPINC . '/taxonomy.php');
 384  require (ABSPATH . WPINC . '/update.php');
 385  require (ABSPATH . WPINC . '/canonical.php');
 386  require (ABSPATH . WPINC . '/shortcodes.php');
 387  require (ABSPATH . WPINC . '/media.php');
 388  require (ABSPATH . WPINC . '/http.php');
 389  require (ABSPATH . WPINC . '/widgets.php');
 390  
 391  if ( !defined('WP_CONTENT_URL') )
 392      define( 'WP_CONTENT_URL', get_option('siteurl') . '/wp-content'); // full url - WP_CONTENT_DIR is defined further up
 393  
 394  /**
 395   * Allows for the plugins directory to be moved from the default location.
 396   *
 397   * @since 2.6.0
 398   */
 399  if ( !defined('WP_PLUGIN_DIR') )
 400      define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
 401  
 402  /**
 403   * Allows for the plugins directory to be moved from the default location.
 404   *
 405   * @since 2.6.0
 406   */
 407  if ( !defined('WP_PLUGIN_URL') )
 408      define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
 409  
 410  /**
 411   * Allows for the plugins directory to be moved from the default location.
 412   *
 413   * @since 2.1.0
 414   */
 415  if ( !defined('PLUGINDIR') )
 416      define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
 417  
 418  /**
 419   * Allows for the mu-plugins directory to be moved from the default location.
 420   *
 421   * @since 2.8.0
 422   */
 423  if ( !defined('WPMU_PLUGIN_DIR') )
 424      define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash
 425  
 426  /**
 427   * Allows for the mu-plugins directory to be moved from the default location.
 428   *
 429   * @since 2.8.0
 430   */
 431  if ( !defined('WPMU_PLUGIN_URL') )
 432      define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // full url, no trailing slash
 433  
 434  /**
 435   * Allows for the mu-plugins directory to be moved from the default location.
 436   *
 437   * @since 2.8.0
 438   */
 439  if ( !defined( 'MUPLUGINDIR' ) )
 440      define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH.  For back compat.
 441  
 442  if ( is_dir( WPMU_PLUGIN_DIR ) ) {
 443      if ( $dh = opendir( WPMU_PLUGIN_DIR ) ) {
 444          while ( ( $plugin = readdir( $dh ) ) !== false ) {
 445              if ( substr( $plugin, -4 ) == '.php' ) {
 446                  include_once( WPMU_PLUGIN_DIR . '/' . $plugin );
 447              }
 448          }
 449      }
 450  }
 451  do_action('muplugins_loaded');
 452  
 453  /**
 454   * Used to guarantee unique hash cookies
 455   * @since 1.5
 456   */
 457  define('COOKIEHASH', md5(get_option('siteurl')));
 458  
 459  /**
 460   * Should be exactly the same as the default value of SECRET_KEY in wp-config-sample.php
 461   * @since 2.5.0
 462   */
 463  $wp_default_secret_key = 'put your unique phrase here';
 464  
 465  /**
 466   * It is possible to define this in wp-config.php
 467   * @since 2.0.0
 468   */
 469  if ( !defined('USER_COOKIE') )
 470      define('USER_COOKIE', 'wordpressuser_' . COOKIEHASH);
 471  
 472  /**
 473   * It is possible to define this in wp-config.php
 474   * @since 2.0.0
 475   */
 476  if ( !defined('PASS_COOKIE') )
 477      define('PASS_COOKIE', 'wordpresspass_' . COOKIEHASH);
 478  
 479  /**
 480   * It is possible to define this in wp-config.php
 481   * @since 2.5.0
 482   */
 483  if ( !defined('AUTH_COOKIE') )
 484      define('AUTH_COOKIE', 'wordpress_' . COOKIEHASH);
 485  
 486  /**
 487   * It is possible to define this in wp-config.php
 488   * @since 2.6.0
 489   */
 490  if ( !defined('SECURE_AUTH_COOKIE') )
 491      define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
 492  
 493  /**
 494   * It is possible to define this in wp-config.php
 495   * @since 2.6.0
 496   */
 497  if ( !defined('LOGGED_IN_COOKIE') )
 498      define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);
 499  
 500  /**
 501   * It is possible to define this in wp-config.php
 502   * @since 2.3.0
 503   */
 504  if ( !defined('TEST_COOKIE') )
 505      define('TEST_COOKIE', 'wordpress_test_cookie');
 506  
 507  /**
 508   * It is possible to define this in wp-config.php
 509   * @since 1.2.0
 510   */
 511  if ( !defined('COOKIEPATH') )
 512      define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home') . '/' ) );
 513  
 514  /**
 515   * It is possible to define this in wp-config.php
 516   * @since 1.5.0
 517   */
 518  if ( !defined('SITECOOKIEPATH') )
 519      define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
 520  
 521  /**
 522   * It is possible to define this in wp-config.php
 523   * @since 2.6.0
 524   */
 525  if ( !defined('ADMIN_COOKIE_PATH') )
 526      define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
 527  
 528  /**
 529   * It is possible to define this in wp-config.php
 530   * @since 2.6.0
 531   */
 532  if ( !defined('PLUGINS_COOKIE_PATH') )
 533      define( 'PLUGINS_COOKIE_PATH', preg_replace('|https?://[^/]+|i', '', WP_PLUGIN_URL)  );
 534  
 535  /**
 536   * It is possible to define this in wp-config.php
 537   * @since 2.0.0
 538   */
 539  if ( !defined('COOKIE_DOMAIN') )
 540      define('COOKIE_DOMAIN', false);
 541  
 542  /**
 543   * It is possible to define this in wp-config.php
 544   * @since 2.6.0
 545   */
 546  if ( !defined('FORCE_SSL_ADMIN') )
 547      define('FORCE_SSL_ADMIN', false);
 548  force_ssl_admin(FORCE_SSL_ADMIN);
 549  
 550  /**
 551   * It is possible to define this in wp-config.php
 552   * @since 2.6.0
 553   */
 554  if ( !defined('FORCE_SSL_LOGIN') )
 555      define('FORCE_SSL_LOGIN', false);
 556  force_ssl_login(FORCE_SSL_LOGIN);
 557  
 558  /**
 559   * It is possible to define this in wp-config.php
 560   * @since 2.5.0
 561   */
 562  if ( !defined( 'AUTOSAVE_INTERVAL' ) )
 563      define( 'AUTOSAVE_INTERVAL', 60 );
 564  
 565  /**
 566   * It is possible to define this in wp-config.php
 567   * @since 2.9.0
 568   */
 569  if ( !defined( 'EMPTY_TRASH_DAYS' ) )
 570      define( 'EMPTY_TRASH_DAYS', 30 );
 571  
 572  require (ABSPATH . WPINC . '/vars.php');
 573  
 574  // make taxonomies available to plugins and themes
 575  // @plugin authors: warning: this gets registered again on the init hook
 576  create_initial_taxonomies();
 577  
 578  // Check for hacks file if the option is enabled
 579  if ( get_option('hack_file') ) {
 580      if ( file_exists(ABSPATH . 'my-hacks.php') )
 581          require(ABSPATH . 'my-hacks.php');
 582  }
 583  
 584  $current_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
 585  if ( is_array($current_plugins) && !defined('WP_INSTALLING') ) {
 586      foreach ( $current_plugins as $plugin ) {
 587          // check the $plugin filename
 588          // Validate plugin filename
 589          if ( validate_file($plugin) // $plugin must validate as file
 590              || '.php' != substr($plugin, -4) // $plugin must end with '.php'
 591              || !file_exists(WP_PLUGIN_DIR . '/' . $plugin)    // $plugin must exist
 592              )
 593              continue;
 594  
 595          include_once(WP_PLUGIN_DIR . '/' . $plugin);
 596      }
 597      unset($plugin);
 598  }
 599  unset($current_plugins);
 600  
 601  require (ABSPATH . WPINC . '/pluggable.php');
 602  
 603  /*
 604   * In most cases the default internal encoding is latin1, which is of no use,
 605   * since we want to use the mb_ functions for utf-8 strings
 606   */
 607  if (function_exists('mb_internal_encoding')) {
 608      if (!@mb_internal_encoding(get_option('blog_charset')))
 609          mb_internal_encoding('UTF-8');
 610  }
 611  
 612  
 613  if ( defined('WP_CACHE') && function_exists('wp_cache_postload') )
 614      wp_cache_postload();
 615  
 616  do_action('plugins_loaded');
 617  
 618  $default_constants = array( 'WP_POST_REVISIONS' => true );
 619  foreach ( $default_constants as $c => $v )
 620      @define( $c, $v ); // will fail if the constant is already defined
 621  unset($default_constants, $c, $v);
 622  
 623  // If already slashed, strip.
 624  if ( get_magic_quotes_gpc() ) {
 625      $_GET    = stripslashes_deep($_GET   );
 626      $_POST   = stripslashes_deep($_POST  );
 627      $_COOKIE = stripslashes_deep($_COOKIE);
 628  }
 629  
 630  // Escape with wpdb.
 631  $_GET    = add_magic_quotes($_GET   );
 632  $_POST   = add_magic_quotes($_POST  );
 633  $_COOKIE = add_magic_quotes($_COOKIE);
 634  $_SERVER = add_magic_quotes($_SERVER);
 635  
 636  // Force REQUEST to be GET + POST.  If SERVER, COOKIE, or ENV are needed, use those superglobals directly.
 637  $_REQUEST = array_merge($_GET, $_POST);
 638  
 639  do_action('sanitize_comment_cookies');
 640  
 641  /**
 642   * WordPress Query object
 643   * @global object $wp_the_query
 644   * @since 2.0.0
 645   */
 646  $wp_the_query =& new WP_Query();
 647  
 648  /**
 649   * Holds the reference to @see $wp_the_query
 650   * Use this global for WordPress queries
 651   * @global object $wp_query
 652   * @since 1.5.0
 653   */
 654  $wp_query     =& $wp_the_query;
 655  
 656  /**
 657   * Holds the WordPress Rewrite object for creating pretty URLs
 658   * @global object $wp_rewrite
 659   * @since 1.5.0
 660   */
 661  $wp_rewrite   =& new WP_Rewrite();
 662  
 663  /**
 664   * WordPress Object
 665   * @global object $wp
 666   * @since 2.0.0
 667   */
 668  $wp           =& new WP();
 669  
 670  /**
 671   * WordPress Widget Factory Object
 672   * @global object $wp_widget_factory
 673   * @since 2.8.0
 674   */
 675  $wp_widget_factory =& new WP_Widget_Factory();
 676  
 677  do_action('setup_theme');
 678  
 679  /**
 680   * Web Path to the current active template directory
 681   * @since 1.5.0
 682   */
 683  define('TEMPLATEPATH', get_template_directory());
 684  
 685  /**
 686   * Web Path to the current active template stylesheet directory
 687   * @since 2.1.0
 688   */
 689  define('STYLESHEETPATH', get_stylesheet_directory());
 690  
 691  // Load the default text localization domain.
 692  load_default_textdomain();
 693  
 694  /**
 695   * The locale of the blog
 696   * @since 1.5.0
 697   */
 698  $locale = get_locale();
 699  $locale_file = WP_LANG_DIR . "/$locale.php";
 700  if ( is_readable($locale_file) )
 701      require_once($locale_file);
 702  
 703  // Pull in locale data after loading text domain.
 704  require_once(ABSPATH . WPINC . '/locale.php');
 705  
 706  /**
 707   * WordPress Locale object for loading locale domain date and various strings.
 708   * @global object $wp_locale
 709   * @since 2.1.0
 710   */
 711  $wp_locale =& new WP_Locale();
 712  
 713  // Load functions for active theme.
 714  if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists(STYLESHEETPATH . '/functions.php') )
 715      include(STYLESHEETPATH . '/functions.php');
 716  if ( file_exists(TEMPLATEPATH . '/functions.php') )
 717      include(TEMPLATEPATH . '/functions.php');
 718  
 719  // Load in support for template functions which the theme supports
 720  require_if_theme_supports( 'post-thumbnails', ABSPATH . WPINC . '/post-thumbnail-template.php' );
 721  
 722  /**
 723   * Runs just before PHP shuts down execution.
 724   *
 725   * @access private
 726   * @since 1.2.0
 727   */
 728  function shutdown_action_hook() {
 729      do_action('shutdown');
 730      wp_cache_close();
 731  }
 732  register_shutdown_function('shutdown_action_hook');
 733  
 734  $wp->init();  // Sets up current user.
 735  
 736  // Everything is loaded and initialized.
 737  do_action('init');
 738  
 739  ?>


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7