Make WordPress Core


Ignore:
Timestamp:
06/11/2024 06:22:37 AM (2 years ago)
Author:
audrasjb
Message:

Login and Registration: Add required attribute to username and password fields in wp_login_form().

These attributes are needed to indicate that both fields are required. This changeset doesn't add the attribute by default but allows extenders to enable it by passing true to the $required_username and $required_password to wp_login_form() arguments array.

Props alesflex, sabernhardt, joedolson, rcreators, rajinsharwar.
Fixes #60062.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/general-template.php

    r58213 r58382  
    492492 *
    493493 * @since 3.0.0
     494 * @since 6.6.0 Added `required_username` and `required_password` arguments.
    494495 *
    495496 * @param array $args {
    496497 *     Optional. Array of options to control the form output. Default empty array.
    497498 *
    498  *     @type bool   $echo           Whether to display the login form or return the form HTML code.
    499  *                                  Default true (echo).
    500  *     @type string $redirect       URL to redirect to. Must be absolute, as in "https://example.com/mypage/".
    501  *                                  Default is to redirect back to the request URI.
    502  *     @type string $form_id        ID attribute value for the form. Default 'loginform'.
    503  *     @type string $label_username Label for the username or email address field. Default 'Username or Email Address'.
    504  *     @type string $label_password Label for the password field. Default 'Password'.
    505  *     @type string $label_remember Label for the remember field. Default 'Remember Me'.
    506  *     @type string $label_log_in   Label for the submit button. Default 'Log In'.
    507  *     @type string $id_username    ID attribute value for the username field. Default 'user_login'.
    508  *     @type string $id_password    ID attribute value for the password field. Default 'user_pass'.
    509  *     @type string $id_remember    ID attribute value for the remember field. Default 'rememberme'.
    510  *     @type string $id_submit      ID attribute value for the submit button. Default 'wp-submit'.
    511  *     @type bool   $remember       Whether to display the "rememberme" checkbox in the form.
    512  *     @type string $value_username Default value for the username field. Default empty.
    513  *     @type bool   $value_remember Whether the "Remember Me" checkbox should be checked by default.
    514  *                                  Default false (unchecked).
     499 *     @type bool   $echo              Whether to display the login form or return the form HTML code.
     500 *                                     Default true (echo).
     501 *     @type string $redirect          URL to redirect to. Must be absolute, as in "https://example.com/mypage/".
     502 *                                     Default is to redirect back to the request URI.
     503 *     @type string $form_id           ID attribute value for the form. Default 'loginform'.
     504 *     @type string $label_username    Label for the username or email address field. Default 'Username or Email Address'.
     505 *     @type string $label_password    Label for the password field. Default 'Password'.
     506 *     @type string $label_remember    Label for the remember field. Default 'Remember Me'.
     507 *     @type string $label_log_in      Label for the submit button. Default 'Log In'.
     508 *     @type string $id_username       ID attribute value for the username field. Default 'user_login'.
     509 *     @type string $id_password       ID attribute value for the password field. Default 'user_pass'.
     510 *     @type string $id_remember       ID attribute value for the remember field. Default 'rememberme'.
     511 *     @type string $id_submit         ID attribute value for the submit button. Default 'wp-submit'.
     512 *     @type bool   $remember          Whether to display the "rememberme" checkbox in the form.
     513 *     @type string $value_username    Default value for the username field. Default empty.
     514 *     @type bool   $value_remember    Whether the "Remember Me" checkbox should be checked by default.
     515 *                                     Default false (unchecked).
     516 *     @type bool   $required_username Whether the username field has the 'required' attribute.
     517 *                                     Default false.
     518 *     @type bool   $required_password Whether the password field has the 'required' attribute.
     519 *                                     Default false.
    515520 *
    516521 * }
     
    519524function wp_login_form( $args = array() ) {
    520525        $defaults = array(
    521                 'echo'           => true,
     526                'echo'              => true,
    522527                // Default 'redirect' value takes the user back to the request URI.
    523                 'redirect'       => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
    524                 'form_id'        => 'loginform',
    525                 'label_username' => __( 'Username or Email Address' ),
    526                 'label_password' => __( 'Password' ),
    527                 'label_remember' => __( 'Remember Me' ),
    528                 'label_log_in'   => __( 'Log In' ),
    529                 'id_username'    => 'user_login',
    530                 'id_password'    => 'user_pass',
    531                 'id_remember'    => 'rememberme',
    532                 'id_submit'      => 'wp-submit',
    533                 'remember'       => true,
    534                 'value_username' => '',
     528                'redirect'          => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
     529                'form_id'           => 'loginform',
     530                'label_username'    => __( 'Username or Email Address' ),
     531                'label_password'    => __( 'Password' ),
     532                'label_remember'    => __( 'Remember Me' ),
     533                'label_log_in'      => __( 'Log In' ),
     534                'id_username'       => 'user_login',
     535                'id_password'       => 'user_pass',
     536                'id_remember'       => 'rememberme',
     537                'id_submit'         => 'wp-submit',
     538                'remember'          => true,
     539                'value_username'    => '',
    535540                // Set 'value_remember' to true to default the "Remember me" checkbox to checked.
    536                 'value_remember' => false,
     541                'value_remember'    => false,
     542                // Set 'required_username' to true to add the required attribute to username field.
     543                'required_username' => false,
     544                // Set 'required_password' to true to add the required attribute to password field.
     545                'required_password' => false,
    537546        );
    538547
     
    595604                        '<p class="login-username">
    596605                                <label for="%1$s">%2$s</label>
    597                                 <input type="text" name="log" id="%1$s" autocomplete="username" class="input" value="%3$s" size="20" />
     606                                <input type="text" name="log" id="%1$s" autocomplete="username" class="input" value="%3$s" size="20"%4$s />
    598607                        </p>',
    599608                        esc_attr( $args['id_username'] ),
    600609                        esc_html( $args['label_username'] ),
    601                         esc_attr( $args['value_username'] )
     610                        esc_attr( $args['value_username'] ),
     611                        ( $args['required_username'] ? ' required="required"' : '' )
    602612                ) .
    603613                sprintf(
    604614                        '<p class="login-password">
    605615                                <label for="%1$s">%2$s</label>
    606                                 <input type="password" name="pwd" id="%1$s" autocomplete="current-password" spellcheck="false" class="input" value="" size="20" />
     616                                <input type="password" name="pwd" id="%1$s" autocomplete="current-password" spellcheck="false" class="input" value="" size="20"%3$s />
    607617                        </p>',
    608618                        esc_attr( $args['id_password'] ),
    609                         esc_html( $args['label_password'] )
     619                        esc_html( $args['label_password'] ),
     620                        ( $args['required_password'] ? ' required="required"' : '' )
    610621                ) .
    611622                $login_form_middle .
Note: See TracChangeset for help on using the changeset viewer.