WordPress.org

Make WordPress Core

Ticket #11172: wp_login_form.diff

File wp_login_form.diff, 6.2 KB (added by ptahdunbar, 5 years ago)
  • general-template.php

     
    234234} 
    235235 
    236236/** 
    237  * Provides a simple login form for use anywhere within WordPress. By default, it echos 
    238  * the HTML immediately. Pass array('echo'=>false) to return the string instead. 
     237 * Provides a simple login form for use anywhere within WordPress. 
    239238 * 
     239 * This function does not check to see whether a user is logged in. 
     240 * 
    240241 * @since 3.0.0 
    241  * @param array $args Configuration options to modify the form output 
    242  * @return Void, or string containing the form 
     242 * 
     243 * @param array $args Optional. Configuration options to modify the form output 
     244 * @param array $fields Optional. Add or replace login form fields. 
     245 * @return null|string Pass <code>array( 'echo' => false )</code> to return the form HTML. Defaults to echoing. 
    243246 */ 
    244 function wp_login_form( $args = array() ) { 
    245         $defaults = array( 'echo' => true, 
    246                                                 'redirect' => site_url( $_SERVER['REQUEST_URI'] ), // Default redirect is back to the current page 
    247                                                 'form_id' => 'loginform', 
    248                                                 'label_username' => __( 'Username' ), 
    249                                                 'label_password' => __( 'Password' ), 
    250                                                 'label_remember' => __( 'Remember Me' ), 
    251                                                 'label_log_in' => __( 'Log In' ), 
    252                                                 'id_username' => 'user_login', 
    253                                                 'id_password' => 'user_pass', 
    254                                                 'id_remember' => 'rememberme', 
    255                                                 'id_submit' => 'wp-submit', 
    256                                                 'remember' => true, 
    257                                                 'value_username' => '', 
    258                                                 'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked 
    259                                         ); 
    260         $args = wp_parse_args( $args, apply_filters( 'login_form_defaults', $defaults ) ); 
     247function wp_login_form( $args = array(), $fields = array() ) { 
     248        $default_args = array( 
     249                'echo' => true, 
     250                'redirect' => site_url( $_SERVER['REQUEST_URI'] ), // Default redirect is back to the current page 
     251                'form_id' => 'loginform', 
     252                'label_username' => __( 'Username' ), 
     253                'label_password' => __( 'Password' ), 
     254                'label_remember' => __( 'Remember Me' ), 
     255                'label_log_in' => __( 'Log In' ), 
     256                'id_username' => 'user_login', 
     257                'id_password' => 'user_pass', 
     258                'id_remember' => 'rememberme', 
     259                'id_submit' => 'wp-submit', 
     260                'remember' => true, 
     261                'value_username' => '', 
     262                'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked 
     263        ); 
    261264 
     265        $args = wp_parse_args( $args, apply_filters( 'wp_login_form_defaults', $default_args ) ); 
     266        extract( $args, EXTR_SKIP ); 
     267         
     268        $default_fields = array( 
     269                'login_user' => '<p class="login-username">' . 
     270                                                '<label for="' . esc_attr( $id_username ) . '">' . esc_html( $label_username ) . '</label>'. 
     271                                                '<input type="text" name="log" id="' . esc_attr( $id_username ) . '" class="input" value="' . esc_attr( $value_username ) . '" size="20" tabindex="10" />'. 
     272                                                '</p><!-- /.login-username -->', 
     273                'login_pass' => '<p class="login-password">' . 
     274                                                '<label for="' . esc_attr( $id_password ) . '">' . esc_html( $label_password ) . '</label>'. 
     275                                                '<input type="password" name="pwd" id="' . esc_attr( $id_password ) . '" class="input" value="" size="20" tabindex="20" />'. 
     276                                                '</p><!-- /.login-password -->', 
     277                                                 
     278                'login_remember' => ( $remember ? '<p class="login-remember"><label for="rememberme"><input id="rememberme" name="rememberme" type="checkbox" id="' . esc_attr( $id_remember ) . '" value="forever" tabindex="90"' . ( $value_remember ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $label_remember ) . '</label></p>' : '' ), 
     279                 
     280                'login_submit' => '<p class="login-submit">' . 
     281                                                '<input type="submit" name="wp-submit" id="' . esc_attr( $id_submit ) . '" class="button-primary" value="' . esc_attr( $label_log_in ) . '" tabindex="100" />'. 
     282                                                '<input type="hidden" name="redirect_to" value="' . esc_attr( $redirect ) . '" />'. 
     283                                                '</p><!-- /.login-submit -->', 
     284        ); 
     285         
     286        $fields = wp_parse_args( $fields, apply_filters( 'wp_login_form_default_fields', $default_fields ) ); 
     287         
     288        $attributes  = ' action="' . site_url( 'wp-login.php', 'login' ) . '" method="post"'; 
     289        $attributes .= $form_id ? ' name="'. $form_id .'" id="'. $form_id .'"' : $attributes; 
     290 
    262291        $form = ' 
    263                 <form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . site_url( 'wp-login.php', 'login' ) . '" method="post"> 
    264                         ' . do_action( 'login_form_top' ) . ' 
    265                         <p class="login-username"> 
    266                                 <label for="' . esc_attr( $args['id_username'] ) . '">' . esc_html( $args['label_username'] ) . '</label> 
    267                                 <input type="text" name="log" id="' . esc_attr( $args['id_username'] ) . '" class="input" value="' . esc_attr( $args['value_username'] ) . '" size="20" tabindex="10" /> 
    268                         </p> 
    269                         <p class="login-password"> 
    270                                 <label for="' . esc_attr( $args['id_password'] ) . '">' . esc_html( $args['label_password'] ) . '</label> 
    271                                 <input type="password" name="pwd" id="' . esc_attr( $args['id_password'] ) . '" class="input" value="" size="20" tabindex="20" /> 
    272                         </p> 
    273                         ' . do_action( 'login_form_middle' ) . ' 
    274                         ' . ( $args['remember'] ? '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="' . esc_attr( $args['id_remember'] ) . '" value="forever" tabindex="90"' . ( $args['value_remember'] ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $args['label_remember'] ) . '</label></p>' : '' ) . ' 
    275                         <p class="login-submit"> 
    276                                 <input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" tabindex="100" /> 
    277                                 <input type="hidden" name="redirect_to" value="' . esc_attr( $args['redirect'] ) . '" /> 
    278                         </p> 
    279                         ' . do_action( 'login_form_bottom' ) . ' 
     292                <form'. $attributes .'> 
     293                        ' . do_action( 'wp_login_form_before', $args ); 
     294                                 
     295                                foreach ( (array) $fields as $name => $field ) { 
     296                                        $form .= do_action( "wp_login_form_field_before_{$name}", $field ); 
     297                                        $form .= apply_filters( "wp_login_form_field_{$name}", $field ) . "\n"; 
     298                                        $form .= do_action( "wp_login_form_field_after_{$name}", $field ); 
     299                                } 
     300                         
     301        $form .= do_action( 'wp_login_form_after', $args ) . ' 
    280302                </form>'; 
    281303 
    282         if ( $args['echo'] ) 
     304        $form = apply_filters( 'wp_login_form', $form, $args ); 
     305         
     306        if ( $echo ) 
    283307                echo $form; 
    284308        else 
    285309                return $form;