wp/wp-admin/options-general.php
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
child 9 177826044cd9
equal deleted inserted replaced
6:490d5cc509ed 7:cf61fcea0001
     7  */
     7  */
     8 
     8 
     9 /** WordPress Administration Bootstrap */
     9 /** WordPress Administration Bootstrap */
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    11 
    11 
    12 /** WordPress Translation Install API */
    12 /** WordPress Translation Installation API */
    13 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    13 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    14 
    14 
    15 if ( ! current_user_can( 'manage_options' ) )
    15 if ( ! current_user_can( 'manage_options' ) )
    16 	wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) );
    16 	wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) );
    17 
    17 
    18 $title = __('General Settings');
    18 $title = __('General Settings');
    19 $parent_file = 'options-general.php';
    19 $parent_file = 'options-general.php';
    20 /* translators: date and time format for exact current time, mainly about timezones, see http://php.net/date */
    20 /* translators: date and time format for exact current time, mainly about timezones, see https://secure.php.net/date */
    21 $timezone_format = _x('Y-m-d H:i:s', 'timezone date format');
    21 $timezone_format = _x('Y-m-d H:i:s', 'timezone date format');
    22 
    22 
    23 /**
       
    24  * Display JavaScript on the page.
       
    25  *
       
    26  * @since 3.5.0
       
    27  */
       
    28 function options_general_add_js() {
       
    29 ?>
       
    30 <script type="text/javascript">
       
    31 	jQuery(document).ready(function($){
       
    32 		var $siteName = $( '#wp-admin-bar-site-name' ).children( 'a' ).first(),
       
    33 			homeURL = ( <?php echo wp_json_encode( get_home_url() ); ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
       
    34 
       
    35 		$( '#blogname' ).on( 'input', function() {
       
    36 			var title = $.trim( $( this ).val() ) || homeURL;
       
    37 
       
    38 			// Truncate to 40 characters.
       
    39 			if ( 40 < title.length ) {
       
    40 				title = title.substring( 0, 40 ) + '\u2026';
       
    41 			}
       
    42 
       
    43 			$siteName.text( title );
       
    44 		});
       
    45 
       
    46 		$("input[name='date_format']").click(function(){
       
    47 			if ( "date_format_custom_radio" != $(this).attr("id") )
       
    48 				$( "input[name='date_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
       
    49 		});
       
    50 		$("input[name='date_format_custom']").focus(function(){
       
    51 			$( '#date_format_custom_radio' ).prop( 'checked', true );
       
    52 		});
       
    53 
       
    54 		$("input[name='time_format']").click(function(){
       
    55 			if ( "time_format_custom_radio" != $(this).attr("id") )
       
    56 				$( "input[name='time_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
       
    57 		});
       
    58 		$("input[name='time_format_custom']").focus(function(){
       
    59 			$( '#time_format_custom_radio' ).prop( 'checked', true );
       
    60 		});
       
    61 		$("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
       
    62 			var format = $(this);
       
    63 			format.siblings( '.spinner' ).addClass( 'is-active' );
       
    64 			$.post(ajaxurl, {
       
    65 					action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
       
    66 					date : format.val()
       
    67 				}, function(d) { format.siblings( '.spinner' ).removeClass( 'is-active' ); format.siblings('.example').text(d); } );
       
    68 		});
       
    69 
       
    70 		var languageSelect = $( '#WPLANG' );
       
    71 		$( 'form' ).submit( function() {
       
    72 			// Don't show a spinner for English and installed languages,
       
    73 			// as there is nothing to download.
       
    74 			if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
       
    75 				$( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
       
    76 			}
       
    77 		});
       
    78 	});
       
    79 </script>
       
    80 <?php
       
    81 }
       
    82 add_action('admin_head', 'options_general_add_js');
    23 add_action('admin_head', 'options_general_add_js');
    83 
    24 
    84 $options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
    25 $options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
    85 	'<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>';
    26 	'<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>';
    86 
    27 
    99 	'content' => $options_help,
    40 	'content' => $options_help,
   100 ) );
    41 ) );
   101 
    42 
   102 get_current_screen()->set_help_sidebar(
    43 get_current_screen()->set_help_sidebar(
   103 	'<p><strong>' . __('For more information:') . '</strong></p>' .
    44 	'<p><strong>' . __('For more information:') . '</strong></p>' .
   104 	'<p>' . __('<a href="https://codex.wordpress.org/Settings_General_Screen" target="_blank">Documentation on General Settings</a>') . '</p>' .
    45 	'<p>' . __('<a href="https://codex.wordpress.org/Settings_General_Screen">Documentation on General Settings</a>') . '</p>' .
   105 	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    46 	'<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
   106 );
    47 );
   107 
    48 
   108 include( ABSPATH . 'wp-admin/admin-header.php' );
    49 include( ABSPATH . 'wp-admin/admin-header.php' );
   109 ?>
    50 ?>
   110 
    51 
   111 <div class="wrap">
    52 <div class="wrap">
   112 <h2><?php echo esc_html( $title ); ?></h2>
    53 <h1><?php echo esc_html( $title ); ?></h1>
   113 
    54 
   114 <form method="post" action="options.php" novalidate="novalidate">
    55 <form method="post" action="options.php" novalidate="novalidate">
   115 <?php settings_fields('general'); ?>
    56 <?php settings_fields('general'); ?>
   116 
    57 
   117 <table class="form-table">
    58 <table class="form-table">
       
    59 
   118 <tr>
    60 <tr>
   119 <th scope="row"><label for="blogname"><?php _e('Site Title') ?></label></th>
    61 <th scope="row"><label for="blogname"><?php _e('Site Title') ?></label></th>
   120 <td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
    62 <td><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" /></td>
   121 </tr>
    63 </tr>
       
    64 
   122 <tr>
    65 <tr>
   123 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
    66 <th scope="row"><label for="blogdescription"><?php _e('Tagline') ?></label></th>
   124 <td><input name="blogdescription" type="text" id="blogdescription" aria-describedby="tagline-description" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
    67 <td><input name="blogdescription" type="text" id="blogdescription" aria-describedby="tagline-description" value="<?php form_option('blogdescription'); ?>" class="regular-text" />
   125 <p class="description" id="tagline-description"><?php _e( 'In a few words, explain what this site is about.' ) ?></p></td>
    68 <p class="description" id="tagline-description"><?php _e( 'In a few words, explain what this site is about.' ) ?></p></td>
   126 </tr>
    69 </tr>
       
    70 
   127 <?php if ( !is_multisite() ) { ?>
    71 <?php if ( !is_multisite() ) { ?>
       
    72 
   128 <tr>
    73 <tr>
   129 <th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
    74 <th scope="row"><label for="siteurl"><?php _e('WordPress Address (URL)') ?></label></th>
   130 <td><input name="siteurl" type="url" id="siteurl" value="<?php form_option( 'siteurl' ); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) echo ' disabled' ?>" /></td>
    75 <td><input name="siteurl" type="url" id="siteurl" value="<?php form_option( 'siteurl' ); ?>"<?php disabled( defined( 'WP_SITEURL' ) ); ?> class="regular-text code<?php if ( defined( 'WP_SITEURL' ) ) echo ' disabled' ?>" /></td>
   131 </tr>
    76 </tr>
       
    77 
   132 <tr>
    78 <tr>
   133 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
    79 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
   134 <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 if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
    80 <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 if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
   135 <p class="description" id="home-description"><?php _e( 'Enter the address here if you <a href="https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">want your site home page to be different from your WordPress installation directory.</a>' ); ?></p></td>
    81 <?php if ( ! defined( 'WP_HOME' ) ) : ?>
   136 </tr>
    82 <p class="description" id="home-description"><?php
   137 <tr>
    83 	printf(
   138 <th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
    84 		/* translators: %s: Codex URL */
   139 <td><input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
    85 		__( 'Enter the address here if you <a href="%s">want your site home page to be different from your WordPress installation directory</a>.' ),
   140 <p class="description" id="admin-email-description"><?php _e( 'This address is used for admin purposes, like new user notification.' ) ?></p></td>
    86 		__( 'https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory' )
   141 </tr>
    87 	);
       
    88 ?></p>
       
    89 <?php endif; ?>
       
    90 </td>
       
    91 </tr>
       
    92 
       
    93 <?php } ?>
       
    94 
       
    95 <tr>
       
    96 <th scope="row"><label for="new_admin_email"><?php _e( 'Email Address' ); ?></label></th>
       
    97 <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" />
       
    98 <p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ); ?></p>
       
    99 <?php
       
   100 $new_admin_email = get_option( 'new_admin_email' );
       
   101 if ( $new_admin_email && $new_admin_email != get_option( 'admin_email' ) ) : ?>
       
   102 	<div class="updated inline">
       
   103 	<p><?php
       
   104 		printf(
       
   105 			/* translators: %s: new admin email */
       
   106 			__( 'There is a pending change of the admin email to %s.' ),
       
   107 			'<code>' . esc_html( $new_admin_email ) . '</code>'
       
   108 		);
       
   109 		printf(
       
   110 			' <a href="%1$s">%2$s</a>',
       
   111 			esc_url( wp_nonce_url( admin_url( 'options.php?dismiss=new_admin_email' ), 'dismiss-' . get_current_blog_id() . '-new_admin_email' ) ),
       
   112 			__( 'Cancel' )
       
   113 		);
       
   114 	?></p>
       
   115 	</div>
       
   116 <?php endif; ?>
       
   117 </td>
       
   118 </tr>
       
   119 
       
   120 <?php if ( ! is_multisite() ) { ?>
       
   121 
   142 <tr>
   122 <tr>
   143 <th scope="row"><?php _e('Membership') ?></th>
   123 <th scope="row"><?php _e('Membership') ?></th>
   144 <td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
   124 <td> <fieldset><legend class="screen-reader-text"><span><?php _e('Membership') ?></span></legend><label for="users_can_register">
   145 <input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
   125 <input name="users_can_register" type="checkbox" id="users_can_register" value="1" <?php checked('1', get_option('users_can_register')); ?> />
   146 <?php _e('Anyone can register') ?></label>
   126 <?php _e('Anyone can register') ?></label>
   147 </fieldset></td>
   127 </fieldset></td>
   148 </tr>
   128 </tr>
       
   129 
   149 <tr>
   130 <tr>
   150 <th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
   131 <th scope="row"><label for="default_role"><?php _e('New User Default Role') ?></label></th>
   151 <td>
   132 <td>
   152 <select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
   133 <select name="default_role" id="default_role"><?php wp_dropdown_roles( get_option('default_role') ); ?></select>
   153 </td>
   134 </td>
   154 </tr>
   135 </tr>
   155 <?php } else { ?>
   136 
   156 <tr>
   137 <?php }
   157 <th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
   138 
   158 <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" />
   139 $languages = get_available_languages();
   159 <p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ) ?></p>
   140 $translations = wp_get_available_translations();
   160 <?php
   141 if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG && ! in_array( WPLANG, $languages ) ) {
   161 $new_admin_email = get_option( 'new_admin_email' );
   142 	$languages[] = WPLANG;
   162 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
   143 }
   163 <div class="updated inline">
   144 if ( ! empty( $languages ) || ! empty( $translations ) ) {
   164 <p><?php printf( __('There is a pending change of the admin e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?></p>
   145 	?>
   165 </div>
   146 	<tr>
   166 <?php endif; ?>
   147 		<th scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th>
   167 </td>
   148 		<td>
   168 </tr>
   149 			<?php
   169 <?php } ?>
   150 			$locale = get_locale();
       
   151 			if ( ! in_array( $locale, $languages ) ) {
       
   152 				$locale = '';
       
   153 			}
       
   154 
       
   155 			wp_dropdown_languages( array(
       
   156 				'name'         => 'WPLANG',
       
   157 				'id'           => 'WPLANG',
       
   158 				'selected'     => $locale,
       
   159 				'languages'    => $languages,
       
   160 				'translations' => $translations,
       
   161 				'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
       
   162 			) );
       
   163 
       
   164 			// Add note about deprecated WPLANG constant.
       
   165 			if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && $locale !== WPLANG ) {
       
   166 				if ( is_multisite() && current_user_can( 'manage_network_options' )
       
   167 					|| ! is_multisite() && current_user_can( 'manage_options' ) ) {
       
   168 					?>
       
   169 					<p class="description">
       
   170 						<strong><?php _e( 'Note:' ); ?></strong> <?php printf( __( 'The %s constant in your %s file is no longer needed.' ), '<code>WPLANG</code>', '<code>wp-config.php</code>' ); ?>
       
   171 					</p>
       
   172 					<?php
       
   173 				}
       
   174 				_deprecated_argument( 'define()', '4.0.0', sprintf( __( 'The %s constant in your %s file is no longer needed.' ), 'WPLANG', 'wp-config.php' ) );
       
   175 			}
       
   176 			?>
       
   177 		</td>
       
   178 	</tr>
       
   179 	<?php
       
   180 }
       
   181 ?>
   170 <tr>
   182 <tr>
   171 <?php
   183 <?php
   172 $current_offset = get_option('gmt_offset');
   184 $current_offset = get_option('gmt_offset');
   173 $tzstring = get_option('timezone_string');
   185 $tzstring = get_option('timezone_string');
   174 
   186 
   191 ?>
   203 ?>
   192 <th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
   204 <th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
   193 <td>
   205 <td>
   194 
   206 
   195 <select id="timezone_string" name="timezone_string" aria-describedby="timezone-description">
   207 <select id="timezone_string" name="timezone_string" aria-describedby="timezone-description">
   196 <?php echo wp_timezone_choice($tzstring); ?>
   208 	<?php echo wp_timezone_choice( $tzstring, get_user_locale() ); ?>
   197 </select>
   209 </select>
   198 
   210 
   199 	<span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
   211 <p class="description" id="timezone-description"><?php _e( 'Choose either a city in the same timezone as you or a UTC timezone offset.' ); ?></p>
   200 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
   212 
   201 	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
   213 <p class="timezone-info">
       
   214 	<span id="utc-time"><?php
       
   215 		/* translators: 1: UTC abbreviation, 2: UTC time */
       
   216 		printf( __( 'Universal time (%1$s) is %2$s.' ),
       
   217 			'<abbr>' . __( 'UTC' ) . '</abbr>',
       
   218 			'<code>' . date_i18n( $timezone_format, false, true ) . '</code>'
       
   219 		);
       
   220 	?></span>
       
   221 <?php if ( get_option( 'timezone_string' ) || ! empty( $current_offset ) ) : ?>
       
   222 	<span id="local-time"><?php
       
   223 		/* translators: %s: local time */
       
   224 		printf( __( 'Local time is %s.' ),
       
   225 			'<code>' . date_i18n( $timezone_format ) . '</code>'
       
   226 		);
       
   227 	?></span>
   202 <?php endif; ?>
   228 <?php endif; ?>
   203 <p class="description" id="timezone-description"><?php _e( 'Choose a city in the same timezone as you.' ); ?></p>
   229 </p>
   204 <?php if ($check_zone_info && $tzstring) : ?>
   230 
   205 <br />
   231 <?php if ( $check_zone_info && $tzstring ) : ?>
       
   232 <p class="timezone-info">
   206 <span>
   233 <span>
   207 	<?php
   234 	<?php
   208 	// Set TZ so localtime works.
   235 	// Set TZ so localtime works.
   209 	date_default_timezone_set($tzstring);
   236 	date_default_timezone_set($tzstring);
   210 	$now = localtime(time(), true);
   237 	$now = localtime(time(), true);
   230 		}
   257 		}
   231 
   258 
   232 		if ( $found ) {
   259 		if ( $found ) {
   233 			echo ' ';
   260 			echo ' ';
   234 			$message = $tr['isdst'] ?
   261 			$message = $tr['isdst'] ?
   235 				__('Daylight saving time begins on: <code>%s</code>.') :
   262 				/* translators: %s: date and time  */
   236 				__('Standard time begins on: <code>%s</code>.');
   263 				__( 'Daylight saving time begins on: %s.')  :
       
   264 				/* translators: %s: date and time  */
       
   265 				__( 'Standard time begins on: %s.' );
   237 			// Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
   266 			// Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
   238 			printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) );
   267 			printf( $message,
       
   268 				'<code>' . date_i18n(
       
   269 					__( 'F j, Y' ) . ' ' . __( 'g:i a' ),
       
   270 					$tr['ts'] + ( $tz_offset - $tr['offset'] )
       
   271 				) . '</code>'
       
   272 			);
   239 		} else {
   273 		} else {
   240 			_e('This timezone does not observe daylight saving time.');
   274 			_e( 'This timezone does not observe daylight saving time.' );
   241 		}
   275 		}
   242 	}
   276 	}
   243 	// Set back to UTC.
   277 	// Set back to UTC.
   244 	date_default_timezone_set('UTC');
   278 	date_default_timezone_set('UTC');
   245 	?>
   279 	?>
   246 	</span>
   280 	</span>
       
   281 </p>
   247 <?php endif; ?>
   282 <?php endif; ?>
   248 </td>
   283 </td>
   249 
   284 
   250 </tr>
   285 </tr>
   251 <tr>
   286 <tr>
   252 <th scope="row"><?php _e('Date Format') ?></th>
   287 <th scope="row"><?php _e('Date Format') ?></th>
   253 <td>
   288 <td>
   254 	<fieldset><legend class="screen-reader-text"><span><?php _e('Date Format') ?></span></legend>
   289 	<fieldset><legend class="screen-reader-text"><span><?php _e('Date Format') ?></span></legend>
   255 <?php
   290 <?php
   256 	/**
   291 	/**
   257 	* Filter the default date formats.
   292 	* Filters the default date formats.
   258 	*
   293 	*
   259 	* @since 2.7.0
   294 	* @since 2.7.0
   260 	* @since 4.0.0 Added ISO date standard YYYY-MM-DD format.
   295 	* @since 4.0.0 Added ISO date standard YYYY-MM-DD format.
   261 	*
   296 	*
   262 	* @param array $default_date_formats Array of default date formats.
   297 	* @param array $default_date_formats Array of default date formats.
   264 	$date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
   299 	$date_formats = array_unique( apply_filters( 'date_formats', array( __( 'F j, Y' ), 'Y-m-d', 'm/d/Y', 'd/m/Y' ) ) );
   265 
   300 
   266 	$custom = true;
   301 	$custom = true;
   267 
   302 
   268 	foreach ( $date_formats as $format ) {
   303 	foreach ( $date_formats as $format ) {
   269 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='date_format' value='" . esc_attr($format) . "'";
   304 		echo "\t<label><input type='radio' name='date_format' value='" . esc_attr( $format ) . "'";
   270 		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
   305 		if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "==="
   271 			echo " checked='checked'";
   306 			echo " checked='checked'";
   272 			$custom = false;
   307 			$custom = false;
   273 		}
   308 		}
   274 		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
   309 		echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
   275 	}
   310 	}
   276 
   311 
   277 	echo '	<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
   312 	echo '<label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"';
   278 	checked( $custom );
   313 	checked( $custom );
   279 	echo '/> ' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom date format in the following field' ) . "</span></label>\n";
   314 	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>' .
   280 	echo '<label for="date_format_custom" class="screen-reader-text">' . __( 'Custom date format:' ) . '</label><input type="text" name="date_format_custom" id="date_format_custom" value="' . esc_attr( get_option('date_format') ) . '" class="small-text" /> <span class="screen-reader-text">' . __( 'example:' ) . ' </span><span class="example"> ' . date_i18n( get_option('date_format') ) . "</span> <span class='spinner'></span>\n";
   315 		'<label for="date_format_custom" class="screen-reader-text">' . __( 'Custom date format:' ) . '</label>' .
       
   316 		'<input type="text" name="date_format_custom" id="date_format_custom" value="' . esc_attr( get_option( 'date_format' ) ) . '" class="small-text" />' .
       
   317 		'<br />' .
       
   318 		'<p><strong>' . __( 'Preview:' ) . '</strong> <span class="example">' . date_i18n( get_option( 'date_format' ) ) . '</span>' .
       
   319 		"<span class='spinner'></span>\n" . '</p>';
   281 ?>
   320 ?>
   282 	</fieldset>
   321 	</fieldset>
   283 </td>
   322 </td>
   284 </tr>
   323 </tr>
   285 <tr>
   324 <tr>
   286 <th scope="row"><?php _e('Time Format') ?></th>
   325 <th scope="row"><?php _e('Time Format') ?></th>
   287 <td>
   326 <td>
   288 	<fieldset><legend class="screen-reader-text"><span><?php _e('Time Format') ?></span></legend>
   327 	<fieldset><legend class="screen-reader-text"><span><?php _e('Time Format') ?></span></legend>
   289 <?php
   328 <?php
   290 	/**
   329 	/**
   291 	* Filter the default time formats.
   330 	* Filters the default time formats.
   292 	*
   331 	*
   293 	* @since 2.7.0
   332 	* @since 2.7.0
   294 	*
   333 	*
   295 	* @param array $default_time_formats Array of default time formats.
   334 	* @param array $default_time_formats Array of default time formats.
   296 	*/
   335 	*/
   297 	$time_formats = array_unique( apply_filters( 'time_formats', array( __( 'g:i a' ), 'g:i A', 'H:i' ) ) );
   336 	$time_formats = array_unique( apply_filters( 'time_formats', array( __( 'g:i a' ), 'g:i A', 'H:i' ) ) );
   298 
   337 
   299 	$custom = true;
   338 	$custom = true;
   300 
   339 
   301 	foreach ( $time_formats as $format ) {
   340 	foreach ( $time_formats as $format ) {
   302 		echo "\t<label title='" . esc_attr($format) . "'><input type='radio' name='time_format' value='" . esc_attr($format) . "'";
   341 		echo "\t<label><input type='radio' name='time_format' value='" . esc_attr( $format ) . "'";
   303 		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
   342 		if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "==="
   304 			echo " checked='checked'";
   343 			echo " checked='checked'";
   305 			$custom = false;
   344 			$custom = false;
   306 		}
   345 		}
   307 		echo ' /> ' . date_i18n( $format ) . "</label><br />\n";
   346 		echo ' /> <span class="date-time-text format-i18n">' . date_i18n( $format ) . '</span><code>' . esc_html( $format ) . "</code></label><br />\n";
   308 	}
   347 	}
   309 
   348 
   310 	echo '	<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
   349 	echo '<label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"';
   311 	checked( $custom );
   350 	checked( $custom );
   312 	echo '/> ' . __( 'Custom:' ) . '<span class="screen-reader-text"> ' . __( 'enter a custom time format in the following field' ) . "</span></label>\n";
   351 	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>' .
   313 	echo '<label for="time_format_custom" class="screen-reader-text">' . __( 'Custom time format:' ) . '</label><input type="text" name="time_format_custom" id="time_format_custom" value="' . esc_attr( get_option('time_format') ) . '" class="small-text" /> <span class="screen-reader-text">' . __( 'example:' ) . ' </span><span class="example"> ' . date_i18n( get_option('time_format') ) . "</span> <span class='spinner'></span>\n";
   352 		'<label for="time_format_custom" class="screen-reader-text">' . __( 'Custom time format:' ) . '</label>' .
   314 
   353 		'<input type="text" name="time_format_custom" id="time_format_custom" value="' . esc_attr( get_option( 'time_format' ) ) . '" class="small-text" />' .
   315 	echo "\t<p>" . __('<a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
   354 		'<br />' .
       
   355 		'<p><strong>' . __( 'Preview:' ) . '</strong> <span class="example">' . date_i18n( get_option( 'time_format' ) ) . '</span>' .
       
   356 		"<span class='spinner'></span>\n" . '</p>';
       
   357 
       
   358 	echo "\t<p class='date-time-doc'>" . __('<a href="https://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date and time formatting</a>.') . "</p>\n";
   316 ?>
   359 ?>
   317 	</fieldset>
   360 	</fieldset>
   318 </td>
   361 </td>
   319 </tr>
   362 </tr>
   320 <tr>
   363 <tr>
   321 <th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
   364 <th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th>
   322 <td><select name="start_of_week" id="start_of_week">
   365 <td><select name="start_of_week" id="start_of_week">
   323 <?php
   366 <?php
       
   367 /**
       
   368  * @global WP_Locale $wp_locale
       
   369  */
   324 global $wp_locale;
   370 global $wp_locale;
   325 
   371 
   326 for ($day_index = 0; $day_index <= 6; $day_index++) :
   372 for ($day_index = 0; $day_index <= 6; $day_index++) :
   327 	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
   373 	$selected = (get_option('start_of_week') == $day_index) ? 'selected="selected"' : '';
   328 	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
   374 	echo "\n\t<option value='" . esc_attr($day_index) . "' $selected>" . $wp_locale->get_weekday($day_index) . '</option>';
   329 endfor;
   375 endfor;
   330 ?>
   376 ?>
   331 </select></td>
   377 </select></td>
   332 </tr>
   378 </tr>
   333 <?php do_settings_fields('general', 'default'); ?>
   379 <?php do_settings_fields('general', 'default'); ?>
   334 
       
   335 <?php
       
   336 $languages = get_available_languages();
       
   337 $translations = wp_get_available_translations();
       
   338 if ( ! is_multisite() && defined( 'WPLANG' ) && '' !== WPLANG && 'en_US' !== WPLANG && ! in_array( WPLANG, $languages ) ) {
       
   339 	$languages[] = WPLANG;
       
   340 }
       
   341 if ( ! empty( $languages ) || ! empty( $translations ) ) {
       
   342 	?>
       
   343 	<tr>
       
   344 		<th width="33%" scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th>
       
   345 		<td>
       
   346 			<?php
       
   347 			$locale = get_locale();
       
   348 			if ( ! in_array( $locale, $languages ) ) {
       
   349 				$locale = '';
       
   350 			}
       
   351 
       
   352 			wp_dropdown_languages( array(
       
   353 				'name'         => 'WPLANG',
       
   354 				'id'           => 'WPLANG',
       
   355 				'selected'     => $locale,
       
   356 				'languages'    => $languages,
       
   357 				'translations' => $translations,
       
   358 				'show_available_translations' => ( ! is_multisite() || is_super_admin() ) && wp_can_install_language_pack(),
       
   359 			) );
       
   360 
       
   361 			// Add note about deprecated WPLANG constant.
       
   362 			if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && $locale !== WPLANG ) {
       
   363 				if ( is_super_admin() ) {
       
   364 					?>
       
   365 					<p class="description">
       
   366 						<strong><?php _e( 'Note:' ); ?></strong> <?php printf( __( 'The %s constant in your %s file is no longer needed.' ), '<code>WPLANG</code>', '<code>wp-config.php</code>' ); ?>
       
   367 					</p>
       
   368 					<?php
       
   369 				}
       
   370 				_deprecated_argument( 'define()', '4.0', sprintf( __( 'The %s constant in your %s file is no longer needed.' ), 'WPLANG', 'wp-config.php' ) );
       
   371 			}
       
   372 			?>
       
   373 		</td>
       
   374 	</tr>
       
   375 	<?php
       
   376 }
       
   377 ?>
       
   378 </table>
   380 </table>
   379 
   381 
   380 <?php do_settings_sections('general'); ?>
   382 <?php do_settings_sections('general'); ?>
   381 
   383 
   382 <?php submit_button(); ?>
   384 <?php submit_button(); ?>