Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_timezone_choice [ WordPress Function ]

wp_timezone_choice ( $selected_zone )
Parameters:
  • (string) $selected_zone Selected Zone
Returns:
  • (string)
Defined at:



Gives a nicely formatted list of timezone strings. // temporary! Not in final

Source


<?php
function wp_timezone_choice$selected_zone ) {
    static 
$mo_loaded false;

    
$continents = array( 'Africa''America''Antarctica''Arctic''Asia''Atlantic''Australia''Europe''Indian''Pacific');

    
// Load translations for continents and cities
    
if ( !$mo_loaded ) {
        
$locale get_locale();
        
$mofile WP_LANG_DIR '/continents-cities-' $locale '.mo';
        
load_textdomain'continents-cities'$mofile );
        
$mo_loaded true;
    }

    
$zonen = array();
    foreach ( 
timezone_identifiers_list() as $zone ) {
        
$zone explode'/'$zone );
        if ( !
in_array$zone[0], $continents ) ) {
            continue;
        }

        
// This determines what gets set and translated - we don't translate Etc/* strings here, they are done later
        
$exists = array(
            
=> ( isset( $zone[0] ) && $zone[0] ),
            
=> ( isset( $zone[1] ) && $zone[1] ),
            
=> ( isset( $zone[2] ) && $zone[2] ),
        );
        
$exists[3] = ( $exists[0] && 'Etc' !== $zone[0] );
        
$exists[4] = ( $exists[1] && $exists[3] );
        
$exists[5] = ( $exists[2] && $exists[3] );

        
$zonen[] = array(
            
'continent'   => ( $exists[0] ? $zone[0] : '' ),
            
'city'        => ( $exists[1] ? $zone[1] : '' ),
            
'subcity'     => ( $exists[2] ? $zone[2] : '' ),
            
't_continent' => ( $exists[3] ? translatestr_replace'_'' '$zone[0] ), 'continents-cities' ) : '' ),
            
't_city'      => ( $exists[4] ? translatestr_replace'_'' '$zone[1] ), 'continents-cities' ) : '' ),
            
't_subcity'   => ( $exists[5] ? translatestr_replace'_'' '$zone[2] ), 'continents-cities' ) : '' )
        );
    }
    
usort$zonen'_wp_timezone_choice_usort_callback' );

    
$structure = array();

    if ( empty( 
$selected_zone ) ) {
        
$structure[] = '<option selected="selected" value="">' __'Select a city' ) . '</option>';
    }

    foreach ( 
$zonen as $key => $zone ) {
        
// Build value in an array to join later
        
$value = array( $zone['continent'] );

        if ( empty( 
$zone['city'] ) ) {
            
// It's at the continent level (generally won't happen)
            
$display $zone['t_continent'];
        } else {
            
// It's inside a continent group

            // Continent optgroup
            
if ( !isset( $zonen[$key 1] ) || $zonen[$key 1]['continent'] !== $zone['continent'] ) {
                
$label $zone['t_continent'];
                
$structure[] = '<optgroup label="'esc_attr$label ) .'">';
            }

            
// Add the city to the value
            
$value[] = $zone['city'];

            
$display $zone['t_city'];
            if ( !empty( 
$zone['subcity'] ) ) {
                
// Add the subcity to the value
                
$value[] = $zone['subcity'];
                
$display .= ' - ' $zone['t_subcity'];
            }
        }

        
// Build the value
        
$value join'/'$value );
        
$selected '';
        if ( 
$value === $selected_zone ) {
            
$selected 'selected="selected" ';
        }
        
$structure[] = '<option ' $selected 'value="' esc_attr$value ) . '">' esc_html$display ) . "</option>";

        
// Close continent optgroup
        
if ( !empty( $zone['city'] ) && ( !isset($zonen[$key 1]) || (isset( $zonen[$key 1] ) && $zonen[$key 1]['continent'] !== $zone['continent']) ) ) {
            
$structure[] = '</optgroup>';
        }
    }

    
// Do UTC
    
$structure[] = '<optgroup label="'esc_attr__'UTC' ) .'">';
    
$selected '';
    if ( 
'UTC' === $selected_zone )
        
$selected 'selected="selected" ';
    
$structure[] = '<option ' $selected 'value="' esc_attr'UTC' ) . '">' __('UTC') . '</option>';
    
$structure[] = '</optgroup>';

    
// Do manual UTC offsets
    
$structure[] = '<optgroup label="'esc_attr__'Manual Offsets' ) .'">';
    
$offset_range = array (-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
        
00.511.522.533.544.555.55.7566.577.588.58.7599.51010.51111.51212.751313.7514);
    foreach ( 
$offset_range as $offset ) {
        if ( 
<= $offset )
            
$offset_name '+' $offset;
        else
            
$offset_name = (string) $offset;

        
$offset_value $offset_name;
        
$offset_name str_replace(array('.25','.5','.75'), array(':15',':30',':45'), $offset_name);
        
$offset_name 'UTC' $offset_name;
        
$offset_value 'UTC' $offset_value;
        
$selected '';
        if ( 
$offset_value === $selected_zone )
            
$selected 'selected="selected" ';
        
$structure[] = '<option ' $selected 'value="' esc_attr$offset_value ) . '">' esc_html$offset_name ) . "</option>";

    }
    
$structure[] = '</optgroup>';

    return 
join"\n"$structure );
}
?>

Examples [ wp-snippets.com ]

Top Google zoekresultaten

Meer ...

Gebruikersdiscussies [ wordpress.org ]

0 User Note(s)

Nog geen één. Wees de eerste!

Nieuw toevoegen ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics