[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/ -> options-general.php (source)

   1  <?php
   2  /**
   3   * General settings administration panel.
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  
   9  /** WordPress Administration Bootstrap */
  10  require_once  __DIR__ . '/admin.php';
  11  
  12  /** WordPress Translation Installation API */
  13  require_once ABSPATH . 'wp-admin/includes/translation-install.php';
  14  
  15  if ( ! current_user_can( 'manage_options' ) ) {
  16      wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) );
  17  }
  18  
  19  // Used in the HTML title tag.
  20  $title       = __( 'General Settings' );
  21  $parent_file = 'options-general.php';
  22  /* translators: Date and time format for exact current time, mainly about timezones, see https://www.php.net/manual/datetime.format.php */
  23  $timezone_format = _x( 'Y-m-d H:i:s', 'timezone date format' );
  24  
  25  add_action( 'admin_head', 'options_general_add_js' );
  26  
  27  $options_help = '<p>' . __( 'The fields on this screen determine some of the basics of your site setup.' ) . '</p>' .
  28      '<p>' . __( 'Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.' ) . '</p>';
  29  
  30  if ( ! is_multisite() ) {
  31      $options_help .= '<p>' . __( 'The WordPress URL and the site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.' ) . '</p>' .
  32          '<p>' . __( 'If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin.' ) . '</p>';
  33  }
  34  
  35  $options_help .= '<p>' . __( 'You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable).' ) . '</p>' .
  36      '<p>' . __( 'UTC means Coordinated Universal Time.' ) . '</p>' .
  37      '<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>';
  38  
  39  get_current_screen()->add_help_tab(
  40      array(
  41          'id'      => 'overview',
  42          'title'   => __( 'Overview' ),
  43          'content' => $options_help,
  44      )
  45  );
  46  
  47  get_current_screen()->set_help_sidebar(
  48      '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
  49      '<p>' . __( '<a href="https://wordpress.org/support/article/settings-general-screen/">Documentation on General Settings</a>' ) . '</p>' .
  50      '<p>' . __( '<a href="https://wordpress.org/support/">Support</a>' ) . '</p>'
  51  );
  52  
  53  require_once ABSPATH . 'wp-admin/admin-header.php';
  54  ?>
  55  
  56  <div class="wrap">
  57  <h1><?php echo esc_html( $title ); ?></h1>
  58  
  59  <form method="post" action="options.php" novalidate="novalidate">
  60  <?php settings_fields( 'general' ); ?>
  61  
  62  <table class="form-table" role="presentation">
  63  
  64  <tr>
  65  <th scope="row"><label for="blogname"><?php _e( 'Site Title' ); ?></label></th>
  66  <td><input name="blogname" type="text" id="blogname" value="<?php form_option( 'blogname' ); ?>" class="regular-text" /></td>
  67  </tr>
  68  
  69  <tr>
  70  <th scope="row"><label for="blogdescription"><?php _e( 'Tagline' ); ?></label></th>
  71  <td><input name="blogdescription" type="text" id="blogdescription" aria-describedby="tagline-description" value="<?php form_option( 'blogdescription' ); ?>" class="regular-text" />
  72  <p class="description" id="tagline-description"><?php _e( 'In a few words, explain what this site is about.' ); ?></p></td>
  73  </tr>
  74  
  75  <?php
  76  if ( ! is_multisite() ) {
  77      $wp_site_url_class = '';
  78      $wp_home_class     = '';
  79      if ( defined( 'WP_SITEURL' ) ) {
  80          $wp_site_url_class = ' disabled';
  81      }
  82      if ( defined( 'WP_HOME' ) ) {
  83          $wp_home_class = ' disabled';
  84      }
  85      ?>
  86  
  87  <tr>
  88  <th scope="row"><label for="siteurl"><?php _e( 'WordPress Address (URL)' ); ?></label></th>
  89  <td><input name="siteurl" type="url" id="siteurl" value="<?php form_option( 'siteurl' ); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php echo $wp_site_url_class; ?>" /></td>
  90  </tr>
  91  
  92  <tr>
  93  <th scope="row"><label for="home"><?php _e( 'Site Address (URL)' ); ?></label></th>
  94  <td><input name="home" type="url" id="home" aria-describedby="home-description" value="<?php form_option( 'home' ); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php echo $wp_home_class; ?>" />
  95      <?php if ( ! defined( 'WP_HOME' ) ) : ?>
  96  <p class="description" id="home-description">
  97          <?php
  98          printf(
  99              /* translators: %s: Documentation URL. */
 100              __( 'Enter the address here if you <a href="%s">want your site home page to be different from your WordPress installation directory</a>.' ),
 101              __( 'https://wordpress.org/support/article/giving-wordpress-its-own-directory/' )
 102          );
 103          ?>
 104  </p>
 105  <?php endif; ?>
 106  </td>
 107  </tr>
 108  
 109  <?php } ?>
 110  
 111  <tr>
 112  <th scope="row"><label for="new_admin_email"><?php _e( 'Administration Email Address' ); ?></label></th>
 113  <td><input name="new_admin_email" type="email" id="new_admin_email" aria-describedby="new-admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
 114  <p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this, an email will be sent to your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ); ?></p>
 115  <?php
 116  $new_admin_email = get_option( 'new_admin_email' );
 117  if ( $new_admin_email && get_option( 'admin_email' ) !== $new_admin_email ) :
 118      ?>
 119      <div class="updated inline">
 120      <p>
 121      <?php
 122          printf(
 123              /* translators: %s: New admin email. */
 124              __( 'There is a pending change of the admin email to %s.' ),
 125              '<code>' . esc_html( $new_admin_email ) . '</code>'
 126          );
 127          printf(
 128              ' <a href="%1$s">%2$s</a>',
 129              esc_url( wp_nonce_url( admin_url( 'options.php?dismiss=new_admin_email' ), 'dismiss-' . get_current_blog_id() . '-new_admin_email' ) ),
 130              __( 'Cancel' )
 131          );
 132      ?>
 133      </p>
 134      </div>
 135  <?php endif; ?>
 136  </td>
 137  </tr>
 138  
 139  <?php if ( ! is_multisite() ) { ?>
 140  
 141  <tr>
 142  <th scope="row"><?php _e( 'Membership' ); ?></th>
 143  <td> <fieldset><legend class="screen-reader-text"><span><?php _e( 'Membership' ); ?></span></legend><label for="users_can_register">
 144  <input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked( '1', get_option( 'users_can_register' ) ); ?> />
 145      <?php _e( 'Anyone can register' ); ?></label>
 146  </fieldset></td>
 147  </tr>
 148  
 149  <tr>
 150  <th scope="row"><label for="default_role"><?php _e( 'New User Default Role' ); ?></label></th>
 151  <td>
 152  <select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option( 'default_role' ) ); ?></select>
 153  </td>
 154  </tr>
 155  
 156      <?php
 157  }
 158  
 159  $languages    = get_available_languages();
 160  $translations = wp_get_available_translations();
 161  if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG && ! in_array( WPLANG, $languages, true ) ) {
 162      $languages[] = WPLANG;
 163  }
 164  if ( ! empty( $languages ) || ! empty( $translations ) ) {
 165      ?>
 166      <tr>
 167          <th scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?><span class="dashicons dashicons-translation" aria-hidden="true"></span></label></th>
 168          <td>
 169              <?php
 170              $locale = get_locale();
 171              if ( ! in_array( $locale, $languages, true ) ) {
 172                  $locale = '';
 173              }
 174  
 175              wp_dropdown_languages(
 176                  array(
 177                      'name'                        => 'WPLANG',
 178                      'id'                          => 'WPLANG',
 179                      'selected'                    => $locale,
 180                      'languages'                   => $languages,
 181                      'translations'                => $translations,
 182                      'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
 183                  )
 184              );
 185  
 186              // Add note about deprecated WPLANG constant.
 187              if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && WPLANG !== $locale ) {
 188                  _deprecated_argument(
 189                      'define()',
 190                      '4.0.0',
 191                      /* translators: 1: WPLANG, 2: wp-config.php */
 192                      sprintf( __( 'The %1$s constant in your %2$s file is no longer needed.' ), 'WPLANG', 'wp-config.php' )
 193                  );
 194              }
 195              ?>
 196          </td>
 197      </tr>
 198      <?php
 199  }
 200  ?>
 201  <tr>
 202  <?php
 203  $current_offset = get_option( 'gmt_offset' );
 204  $tzstring       = get_option( 'timezone_string' );
 205  
 206  $check_zone_info = true;
 207  
 208  // Remove old Etc mappings. Fallback to gmt_offset.
 209  if ( false !== strpos( $tzstring, 'Etc/GMT' ) ) {
 210      $tzstring = '';
 211  }
 212  
 213  if ( empty( $tzstring ) ) { // Create a UTC+- zone if no timezone string exists.
 214      $check_zone_info = false;
 215      if ( 0 == $current_offset ) {
 216          $tzstring = 'UTC+0';
 217      } elseif ( $current_offset < 0 ) {
 218          $tzstring = 'UTC' . $current_offset;
 219      } else {
 220          $tzstring = 'UTC+' . $current_offset;
 221      }
 222  }
 223  
 224  ?>
 225  <th scope="row"><label for="timezone_string"><?php _e( 'Timezone' ); ?></label></th>
 226  <td>
 227  
 228  <select id="timezone_string" name="timezone_string" aria-describedby="timezone-description">
 229      <?php echo wp_timezone_choice( $tzstring, get_user_locale() ); ?>
 230  </select>
 231  
 232  <p class="description" id="timezone-description">
 233  <?php
 234      printf(
 235          /* translators: %s: UTC abbreviation */
 236          __( 'Choose either a city in the same timezone as you or a %s (Coordinated Universal Time) time offset.' ),
 237          '<abbr>UTC</abbr>'
 238      );
 239      ?>
 240  </p>
 241  
 242  <p class="timezone-info">
 243      <span id="utc-time">
 244      <?php
 245          printf(
 246              /* translators: %s: UTC time. */
 247              __( 'Universal time is %s.' ),
 248              '<code>' . date_i18n( $timezone_format, false, true ) . '</code>'
 249          );
 250          ?>
 251      </span>
 252  <?php if ( get_option( 'timezone_string' ) || ! empty( $current_offset ) ) : ?>
 253      <span id="local-time">
 254      <?php
 255          printf(
 256              /* translators: %s: Local time. */
 257              __( 'Local time is %s.' ),
 258              '<code>' . date_i18n( $timezone_format ) . '</code>'
 259          );
 260      ?>
 261      </span>
 262  <?php endif; ?>
 263  </p>
 264  
 265  <?php if ( $check_zone_info && $tzstring ) : ?>
 266  <p class="timezone-info">
 267  <span>
 268      <?php
 269      $now = new DateTime( 'now', new DateTimeZone( $tzstring ) );
 270      $dst = (bool) $now->format( 'I' );
 271  
 272      if ( $dst ) {
 273          _e( 'This timezone is currently in daylight saving time.' );
 274      } else {
 275          _e( 'This timezone is currently in standard time.' );
 276      }
 277      ?>
 278      <br />
 279      <?php
 280      if ( in_array( $tzstring, timezone_identifiers_list(), true ) ) {
 281          $transitions = timezone_transitions_get( timezone_open( $tzstring ), time() );
 282  
 283          // 0 index is the state at current time, 1 index is the next transition, if any.
 284          if ( ! empty( $transitions[1] ) ) {
 285              echo ' ';
 286              $message = $transitions[1]['isdst'] ?
 287                  /* translators: %s: Date and time. */
 288                  __( 'Daylight saving time begins on: %s.' ) :
 289                  /* translators: %s: Date and time. */
 290                  __( 'Standard time begins on: %s.' );
 291              printf(
 292                  $message,
 293                  '<code>' . wp_date( __( 'F j, Y' ) . ' ' . __( 'g:i a' ), $transitions[1]['ts'] ) . '</code>'
 294              );
 295          } else {
 296              _e( 'This timezone does not observe daylight saving time.' );
 297          }
 298      }
 299      ?>
 300      </span>
 301  </p>
 302  <?php endif; ?>
 303  </td>
 304  
 305  </tr>
 306  <tr>
 307  <th scope="row"><?php _e( 'Date Format' ); ?></th>
 308  <td>
 309      <fieldset><legend class="screen-reader-text"><span><?php _e( 'Date Format' ); ?></span></legend>
 310  <?php
 311      /**
 312       * Filters the default date formats.
 313       *
 314       * @since 2.7.0
 315       * @since 4.0.0 Added ISO date standard YYYY-MM-DD format.
 316       *
 317       * @param string[] $default_date_formats Array of default date formats.
 318       */
 319      $date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
 320  
 321      $custom = true;
 322  
 323  foreach ( $date_formats as $format ) {
 324      echo "\t<label><input type='radio' name='date_format' value='" . esc_attr( $format ) . "'";
 325      if ( get_option( 'date_format' ) === $format ) { // checked() uses "==" rather than "===".
 326          echo " checked='checked'";
 327          $custom = false;
 328      }
 329      echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
 330  }
 331  
 332      echo '<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
 333      checked( $custom );
 334      echo '/> <span class="date-time-text date-time-custom-text">' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom date format in the following field' ) . '</span></span></label>' .
 335          '<label for="date_format_custom" class="screen-reader-text">' . __( 'Custom date format:' ) . '</label>' .
 336          '<input type="text" name="date_format_custom" id="date_format_custom" value="' . esc_attr( get_option( 'date_format' ) ) . '" class="small-text" />' .
 337          '<br />' .
 338          '<p><strong>' . __( 'Preview:' ) . '</strong> <span class="example">' . date_i18n( get_option( 'date_format' ) ) . '</span>' .
 339          "<span class='spinner'></span>\n" . '</p>';
 340  ?>
 341      </fieldset>
 342  </td>
 343  </tr>
 344  <tr>
 345  <th scope="row"><?php _e( 'Time Format' ); ?></th>
 346  <td>
 347      <fieldset><legend class="screen-reader-text"><span><?php _e( 'Time Format' ); ?></span></legend>
 348  <?php
 349      /**
 350       * Filters the default time formats.
 351       *
 352       * @since 2.7.0
 353       *
 354       * @param string[] $default_time_formats Array of default time formats.
 355       */
 356      $time_formats = array_unique( apply_filters( 'time_formats', array( __( 'g:i a' ), 'g:i A', 'H:i' ) ) );
 357  
 358      $custom = true;
 359  
 360  foreach ( $time_formats as $format ) {
 361      echo "\t<label><input type='radio' name='time_format' value='" . esc_attr( $format ) . "'";
 362      if ( get_option( 'time_format' ) === $format ) { // checked() uses "==" rather than "===".
 363          echo " checked='checked'";
 364          $custom = false;
 365      }
 366      echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
 367  }
 368  
 369      echo '<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
 370      checked( $custom );
 371      echo '/> <span class="date-time-text date-time-custom-text">' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom time format in the following field' ) . '</span></span></label>' .
 372          '<label for="time_format_custom" class="screen-reader-text">' . __( 'Custom time format:' ) . '</label>' .
 373          '<input type="text" name="time_format_custom" id="time_format_custom" value="' . esc_attr( get_option( 'time_format' ) ) . '" class="small-text" />' .
 374          '<br />' .
 375          '<p><strong>' . __( 'Preview:' ) . '</strong> <span class="example">' . date_i18n( get_option( 'time_format' ) ) . '</span>' .
 376          "<span class='spinner'></span>\n" . '</p>';
 377  
 378      echo "\t<p class='date-time-doc'>" . __( '<a href="https://wordpress.org/support/article/formatting-date-and-time/">Documentation on date and time formatting</a>.' ) . "</p>\n";
 379  ?>
 380      </fieldset>
 381  </td>
 382  </tr>
 383  <tr>
 384  <th scope="row"><label for="start_of_week"><?php _e( 'Week Starts On' ); ?></label></th>
 385  <td><select name="start_of_week" id="start_of_week">
 386  <?php
 387  /**
 388   * @global WP_Locale $wp_locale WordPress date and time locale object.
 389   */
 390  global $wp_locale;
 391  
 392  for ( $day_index = 0; $day_index <= 6; $day_index++ ) :
 393      $selected = ( get_option( 'start_of_week' ) == $day_index ) ? 'selected="selected"' : '';
 394      echo "\n\t<option value='" . esc_attr( $day_index ) . "' $selected>" . $wp_locale->get_weekday( $day_index ) . '</option>';
 395  endfor;
 396  ?>
 397  </select></td>
 398  </tr>
 399  <?php do_settings_fields( 'general', 'default' ); ?>
 400  </table>
 401  
 402  <?php do_settings_sections( 'general' ); ?>
 403  
 404  <?php submit_button(); ?>
 405  </form>
 406  
 407  </div>
 408  
 409  <?php require_once ABSPATH . 'wp-admin/admin-footer.php'; ?>


Generated: Sat Apr 27 01:00:02 2024 Cross-referenced by PHPXref 0.7.1