` element. * Default 'Log In'. * @param string $message Optional. Message to display in header. Default empty. * @param WP_Error $wp_error Optional. The error to pass. Default empty. */ function login_header_otp( $title = 'Log In', $message = '', $wp_error = '' ) { global $error, $interim_login, $action; if ( empty( $wp_error ) ) { $wp_error = new \WP_Error(); } // Shake it! $shake_error_codes = array( 'empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password', ); /** * Filters the error codes array for shaking the login form. * * @param array $shake_error_codes Error codes that shake the login form. * * @since 3.0.0 * */ $shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes ); if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) { add_action( 'login_head', 'wp_shake_js', 12 ); } $separator = is_rtl() ? ' › ' : ' ‹ '; ?> > <?php echo get_bloginfo( 'name', 'display' ) . $separator . $title; ?> get_error_code() ) { ?> site_name; } else { $login_header_url = __( 'https://wordpress.org/' ); $login_header_title = __( 'Powered by WordPress' ); } /** * Filters link URL of the header logo above login form. * * @param string $login_header_url Login header logo URL. * * @since 2.1.0 * */ $login_header_url = apply_filters( 'login_headerurl', $login_header_url ); /** * Filters the title attribute of the header logo above login form. * * @param string $login_header_title Login header logo title attribute. * * @since 2.1.0 */ $login_header_title = apply_filters( 'login_headertitle', $login_header_title ); $classes = array( 'login-action-' . $action, 'wp-core-ui' ); if ( is_rtl() ) { $classes[] = 'rtl'; } if ( $interim_login ) { $classes[] = 'interim-login'; ?>

add( 'error', $error ); unset( $error ); } if ( $wp_error->get_error_code() ) { $errors = ''; $messages = ''; foreach ( $wp_error->get_error_codes() as $code ) { $severity = $wp_error->get_error_data( $code ); foreach ( $wp_error->get_error_messages( $code ) as $error_message ) { if ( 'message' == $severity ) { $messages .= ' ' . $error_message . "
\n"; } else { $errors .= ' ' . $error_message . "
\n"; } } } if ( ! empty( $errors ) ) { /** * Filters the error messages displayed above the login form. * * @param string $errors Login error message. * * @since 2.1.0 * */ echo '
' . apply_filters( 'login_errors', $errors ) . "
\n"; } if ( ! empty( $messages ) ) { /** * Filters instructional messages displayed above the login form. * * @param string $messages Login messages. * * @since 2.5.0 * */ echo '

' . apply_filters( 'login_messages', $messages ) . "

\n"; } } } } if ( isset( $interim_login ) && 'success' === $interim_login ) { login_header_otp( '', $message ); $modal_close_script = << jQuery(function ($) { $('.wp-auth-check-close', window.parent.document).trigger('click'); }); END; add_action( 'wp_print_footer_scripts', function() use ( $modal_close_script ) { echo $modal_close_script; } ); } else { login_header_otp( '', '', $error ); if ( ! empty( $providers ) ) { foreach ( $providers as $slug => $provider ) { ?>
authentication_form(); ?>
1 ) { ?>

jQuery(function ($) { function two_factor_providers( defaultSlug ) { // Hide all forms and show the one default. $('.wpdef-2fa-form').hide(); $('#wpdef-2fa-form-' + defaultSlug).show(); // Hide all links and show others except the default. if ( $('.wpdef-2fa-link').length > 0 ) { $('.wpdef-2fa-link').hide(); $('.wpdef-2fa-link:not(#wpdef-2fa-link-'+ defaultSlug +')').each(function(){ $(this).show(); }); } } var is_sent = false; // Logic for FallbackEmail method. function resend_code() { // Work with the button 'Resen Code'. var that = $('input[name="button_resend_code"]'); if (is_sent === false) { is_sent = true; } let data = { data: JSON.stringify({ 'token': '{$token}' }) }; $.ajax({ type: 'POST', url: '{$action_fallback_email}', data: data, beforeSend: function () { that.attr('disabled', 'disabled'); $('.def-ajaxloader').show(); }, success: function (data) { that.removeAttr('disabled'); $('.def-ajaxloader').hide(); $('.notification').text(data.data.message); is_sent = false; } }) } $('.def-ajaxloader').hide(); // Hide all forms and show the one default. var defaultSlug = '{$default_slug}'; two_factor_providers( defaultSlug ); // Work with links. $('body').on('click', '.wpdef-2fa-link', function () { $('#login_error').remove(); // Clear any previous notification. $('.notification').empty(); var slug = $(this).data('slug'); two_factor_providers( slug ); // Switch to 'Fallback Email' method. if ('fallback-email' === slug) { resend_code(); } }); // Resend code. $('body').on('click', 'input[name="button_resend_code"]', function (e) { e.preventDefault(); resend_code(); }) }) END; add_action( 'wp_print_footer_scripts', function() use ( $totp_script ) { echo $totp_script; } ); ?>