WordPress.org

Make WordPress Core

Ticket #19579: wp-includes.general-template.get_search_form.rev3.diff

File wp-includes.general-template.get_search_form.rev3.diff, 5.7 KB (added by chipbennett, 2 years ago)

Remove placeholder="search" from default atts array. Reverts changes related to #16538

  • general-template.php

     
    131131/** 
    132132 * Display search form. 
    133133 * 
     134 * This function is primarily used by themes that want to hardcode the search 
     135 * form into the sidebar and also by the search widget in WordPress. 
     136 * 
    134137 * Will first attempt to locate the searchform.php file in either the child or 
    135138 * the parent, then load it. If it doesn't exist, then the default search form 
    136139 * will be displayed. The default search form is HTML, which will be displayed. 
    137  * There is a filter applied to the search form HTML in order to edit or replace 
    138  * it. The filter is 'get_search_form'. 
     140 *  
     141 * The 'get_search_form' action is fired when the function is called, which can 
     142 * be useful for outputting search-form dependent JavaScript or various formatting 
     143 * that applies to the beginning of the search form. 
     144 *  
     145 * The 'search_form_defaults' filter is applied to the parsed argument array,  
     146 * which can be useful for filtering the defaults in lieu of passing an argument  
     147 * array directly to the function. 
     148 *  
     149 * The 'get_search_form' filter applied to the search form HTML in order to edit  
     150 * or replace it. 
     151 *  
     152 * For consistency with other template-loading functions, the function will also  
     153 * accept a string $name argument, that will be used to locate template 
     154 * searchform-$name.php. 
     155 *  
     156 * For backward compatibility, the function will also accept a boolean $echo  
     157 * argument, to determine if the search form is echoed (true) or returned (false). 
    139158 * 
    140  * This function is primarily used by themes which want to hardcode the search 
    141  * form into the sidebar and also by the search widget in WordPress. 
    142  * 
    143  * There is also an action that is called whenever the function is run called, 
    144  * 'get_search_form'. This can be useful for outputting JavaScript that the 
    145  * search relies on or various formatting that applies to the beginning of the 
    146  * search. To give a few examples of what it can be used for. 
    147  * 
    148  * @since 2.7.0 
    149  * @param boolean $echo Default to echo and not return the form. 
     159 * @since       2.7.0 
     160 * @param       array   $args   Array of arguments passed to the search form 
    150161 */ 
    151 function get_search_form($echo = true) { 
     162function get_search_form( $args = array() ) { 
    152163        do_action( 'get_search_form' ); 
    153  
    154         $search_form_template = locate_template('searchform.php'); 
     164         
     165        // Support searchform-$name.php 
     166        $form_template = false; 
     167        if ( isset( $args['template'] ) { 
     168                $form_template = $args['template']; 
     169        } else if ( is_string( $args ) ) { 
     170                $form_template = $args; 
     171        } 
     172         
     173        // If a search form template is found, use it 
     174        $templates = array();    
     175        if ( $form_template ) { 
     176                $templates[] = 'searchform-' . $form_template . '.php'; 
     177        } 
     178        $templates[] = 'searchform.php'; 
     179         
     180        $search_form_template = locate_template( $templates );   
     181         
    155182        if ( '' != $search_form_template ) { 
    156                 require($search_form_template); 
     183                require( $search_form_template ); 
    157184                return; 
    158185        } 
    159186 
    160         $form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" > 
    161         <div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label> 
    162         <input type="text" value="' . get_search_query() . '" name="s" id="s" /> 
    163         <input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" /> 
    164         </div> 
    165         </form>'; 
     187        // Define default arguments 
     188        $defaults = array( 
     189                'template'              => null, 
     190                'id'                    => 's' 
     191                'container'             => 'div', 
     192                'form_id'               => 'searchform', 
     193                'label_atts'            => array( 
     194                        'class'                 => 'screen-reader-text' 
     195                ), 
     196                'label_text'    => __( 'Search for:' ), 
     197                'input_atts'    => array( 
     198                        'type'                  => 'text', 
     199                        'value'                 => get_search_query() 
     200                ), 
     201                'submit_atts'   => array( 
     202                        'type'                  => 'submit', 
     203                        'value'                 => __( 'Search' ), 
     204                ), 
     205                'echo'                  => true 
     206        ); 
     207         
     208        // Maintain backward compatibility with $echo = true 
     209        $echo = ( is_bool( $args ) ? $args : $args['echo'] ); 
     210        $args = ( is_array( $args ) ? wp_parse_args( $args, $defaults ) : $defaults ); 
    166211 
    167         if ( $echo ) 
    168                 echo apply_filters('get_search_form', $form); 
    169         else 
    170                 return apply_filters('get_search_form', $form); 
     212        // Allow search form arguments to be filtered 
     213        $args = apply_filters( 'search_form_defaults', $args ); 
     214 
     215        // Label attributes 
     216        $label_atts = ''; 
     217        foreach ( $args['label_atts'] as $att => $value ) { 
     218                $label_atts .= $att . '="' . esc_attr( $value ) . '"'; 
     219        } 
     220        $label_atts = implode( ' ', $label_atts ); 
     221         
     222        // Input attributes 
     223        $input_atts = ''; 
     224        foreach ( $args['input_atts'] as $att => $value ) { 
     225                $input_atts .= $att . '="' . esc_attr( $value ) . '"'; 
     226        } 
     227        $input_atts = implode( ' ', $input_atts ); 
     228         
     229        // Submit attributes 
     230        $submit_atts = ''; 
     231        foreach ( $args['submit_atts'] as $att => $value ) { 
     232                $submit_atts .= $att . '="' . esc_attr( $value ) . '"'; 
     233        } 
     234        $submit_atts = implode( ' ', $submit_atts ); 
     235 
     236        // Construct the form markup     
     237        $form = '<form role="search" method="get" id="' . esc_attr( $args['form_id'] ) . '" action="' . esc_url( home_url( '/' ) ) . '" >'; 
     238        if ( false != $args['container'] ) { 
     239                $form .= '<' . esc_attr( $args['container'] ) . '>'; 
     240        } 
     241        $form .= '<label for="' . esc_attr( $args['id'] ) . '" ' . $label_atts . '>' . esc_attr( $args['label_text'] ) . '</label>'; 
     242        $form .= '<input name="' . esc_attr( $args['id'] ) . '" id="' . esc_attr( $args['id'] ) . '" ' . $input_atts . ' />'; 
     243        $form .= '<input id="' . esc_attr( $args['form_id'] ) . '" ' . $submit_atts . ' />'; 
     244        if ( false != $args['container'] ) { 
     245                $form .= '</' . esc_attr( $args['container'] ) . '>'; 
     246        } 
     247        $form .= '</form>'; 
     248 
     249        // Echo or return        
     250        if ( $echo ) { 
     251                echo apply_filters( 'get_search_form', $form ); 
     252        } else { 
     253                return apply_filters( 'get_search_form', $form ); 
     254        } 
    171255} 
    172256 
    173257/**