WordPress.org

Make WordPress Core

Ticket #33085: 33085.diff

File 33085.diff, 6.4 KB (added by valendesigns, 4 years ago)
  • src/wp-includes/class-wp-customize-control.php

    diff --git src/wp-includes/class-wp-customize-control.php src/wp-includes/class-wp-customize-control.php
    index a0abfc5..f1f41eb 100644
    class WP_Customize_Control { 
    404404         * @since 3.4.0
    405405         */
    406406        protected function render_content() {
     407                $input_id = '_customize-input-' . $this->id;
     408                $description_id = '_customize-description-' . $this->id;
     409                $describedby = ( ! empty( $this->description ) ) ? 'aria-describedby="' . esc_attr( $description_id ). '"' : '';
     410
    407411                switch( $this->type ) {
    408412                        case 'checkbox':
    409413                                ?>
    410                                 <label>
    411                                         <input type="checkbox" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); checked( $this->value() ); ?> />
     414                                <label for="<?php echo esc_attr( $input_id ); ?>">
     415                                        <input id="<?php echo esc_attr( $input_id ); ?>" type="checkbox" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); checked( $this->value() ); ?> <?php echo $describedby; ?> />
    412416                                        <?php echo esc_html( $this->label ); ?>
    413                                         <?php if ( ! empty( $this->description ) ) : ?>
    414                                                 <span class="description customize-control-description"><?php echo $this->description; ?></span>
    415                                         <?php endif; ?>
    416417                                </label>
    417                                 <?php
     418                                <?php if ( ! empty( $this->description ) ) : ?>
     419                                        <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
     420                                <?php endif;
    418421                                break;
    419422                        case 'radio':
    420423                                if ( empty( $this->choices ) )
    class WP_Customize_Control { 
    439442                                endforeach;
    440443                                break;
    441444                        case 'select':
    442                                 if ( empty( $this->choices ) )
     445                                if ( empty( $this->choices ) ) {
    443446                                        return;
    444 
     447                                }
    445448                                ?>
    446                                 <label>
    447                                         <?php if ( ! empty( $this->label ) ) : ?>
     449
     450                                <?php if ( ! empty( $this->label ) ) : ?>
     451                                        <label for="<?php echo esc_attr( $input_id ); ?>">
    448452                                                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
    449                                         <?php endif;
    450                                         if ( ! empty( $this->description ) ) : ?>
    451                                                 <span class="description customize-control-description"><?php echo $this->description; ?></span>
    452                                         <?php endif; ?>
    453 
    454                                         <select <?php $this->link(); ?>>
    455                                                 <?php
    456                                                 foreach ( $this->choices as $value => $label )
    457                                                         echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
    458                                                 ?>
    459                                         </select>
    460                                 </label>
     453                                        </label>
     454                                <?php endif;
     455                                if ( ! empty( $this->description ) ) : ?>
     456                                        <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
     457                                <?php endif; ?>
     458
     459                                <select id="<?php echo esc_attr( $input_id ); ?>" <?php $this->link(); ?> <?php echo $describedby; ?>>
     460                                        <?php
     461                                        foreach ( $this->choices as $value => $label )
     462                                                echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
     463                                        ?>
     464                                </select>
     465                               
    461466                                <?php
    462467                                break;
    463468                        case 'textarea':
    464469                                ?>
    465                                 <label>
    466                                         <?php if ( ! empty( $this->label ) ) : ?>
     470
     471                                <?php if ( ! empty( $this->label ) ) : ?>
     472                                        <label for="<?php echo esc_attr( $input_id ); ?>">
    467473                                                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
    468                                         <?php endif;
    469                                         if ( ! empty( $this->description ) ) : ?>
    470                                                 <span class="description customize-control-description"><?php echo $this->description; ?></span>
    471                                         <?php endif; ?>
    472                                         <textarea rows="5" <?php $this->link(); ?>><?php echo esc_textarea( $this->value() ); ?></textarea>
    473                                 </label>
     474                                        </label>
     475                                <?php endif;
     476                                if ( ! empty( $this->description ) ) : ?>
     477                                        <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
     478                                <?php endif; ?>
     479                                <textarea id="<?php echo esc_attr( $input_id ); ?>" rows="5" <?php $this->link(); ?> <?php echo $describedby; ?>><?php echo esc_textarea( $this->value() ); ?></textarea>
     480
    474481                                <?php
    475482                                break;
    476483                        case 'dropdown-pages':
    477484                                ?>
    478                                 <label>
     485
    479486                                <?php if ( ! empty( $this->label ) ) : ?>
    480                                         <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
     487                                        <label for="<?php echo esc_attr( $input_id ); ?>">
     488                                                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
     489                                        </label>
    481490                                <?php endif;
    482491                                if ( ! empty( $this->description ) ) : ?>
    483                                         <span class="description customize-control-description"><?php echo $this->description; ?></span>
     492                                        <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
    484493                                <?php endif; ?>
    485494
    486495                                <?php $dropdown = wp_dropdown_pages(
    class WP_Customize_Control { 
    495504
    496505                                // Hackily add in the data link parameter.
    497506                                $dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
     507                                // Hackily add in the ID and aria-describedby parameters.
     508                                $dropdown = str_replace( '<select', '<select id="' . esc_attr( $input_id ) . '" ' . $describedby, $dropdown );
    498509                                echo $dropdown;
    499                                 ?>
    500                                 </label>
    501                                 <?php
     510
    502511                                break;
    503512                        default:
    504513                                ?>
    505                                 <label>
    506                                         <?php if ( ! empty( $this->label ) ) : ?>
     514
     515                                <?php if ( ! empty( $this->label ) ) : ?>
     516                                        <label for="<?php echo esc_attr( $input_id ); ?>">
    507517                                                <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
    508                                         <?php endif;
    509                                         if ( ! empty( $this->description ) ) : ?>
    510                                                 <span class="description customize-control-description"><?php echo $this->description; ?></span>
    511                                         <?php endif; ?>
    512                                         <input type="<?php echo esc_attr( $this->type ); ?>" <?php $this->input_attrs(); ?> value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> />
    513                                 </label>
     518                                        </label>
     519                                <?php endif;
     520                                if ( ! empty( $this->description ) ) : ?>
     521                                        <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span>
     522                                <?php endif; ?>
     523                                <input id="<?php echo esc_attr( $input_id ); ?>" type="<?php echo esc_attr( $this->type ); ?>" <?php $this->input_attrs(); ?> value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> <?php echo $describedby; ?> />
    514524                                <?php
    515525                                break;
    516526                }