WordPress

php — Błąd krytyczny: Nieprzechwycony ArgumentCountError: Zbyt mało argumentów do działania — po wylogowaniu z pulpitu wordpress

  • 3 marca, 2023
  • 3 min read
php — Błąd krytyczny: Nieprzechwycony ArgumentCountError: Zbyt mało argumentów do działania — po wylogowaniu z pulpitu wordpress


Otrzymuję błąd krytyczny podczas próby zalogowania się do pulpitu nawigacyjnego WP – i wylogowania po zalogowaniu przez hosta:

Błąd krytyczny: Uncaught ArgumentCountError: Zbyt mało argumentów do funkcji Wpsec\captcha\handlers\WPLoginEventHandler::handle_login_hook(), 1 przekazany w /var/www/wp-includes/class-wp-hook.php w linii 308 i dokładnie 2 oczekiwane w /var/www/wp-content/mu-plugins/vendor/wpsec/wp-captcha-plugin/src/handlers/WPLoginEventHandler.php:24 Ślad stosu: #0 /var/www/wp-includes/class-wp -hook.php(308): Wpsec\captcha\handlers\WPLoginEventHandler->handle_login_hook(NULL) #1 /var/www/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(” , Tablica) #2 /var/www/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /var/www/wp-content/themes/arya-multipurpose-child/functions.php (34): do_action(’wp_login_failed’, NULL) #4 /var/www/wp-includes/class-wp-hook.php(308): {closure}(NULL, ”, ”) #5 /var /www/wp-includes/plugin.php(205): WP_Hook->apply_filters(NULL, tablica) #6 /var/www/wp-includes/pluggable.php(614): apply_filters(’uwierzytelnij’, NULL, ’ ’, ”) #7 /var/www/wp-includes/user.php(95): wp_authenti cate(”, ”) #8 /var/www/wp-login.php w /var/www/wp-content/mu-plugins/vendor/wpsec/wp-captcha-plugin/src/handlers/WPLoginEventHandler. php w linii 24

Jednak dodałem tylko kod do arya-multipurpose-child/functions.php:

//add hook to redirect the user back to the elementor login page if the login failed
add_action( 'wp_login_failed', 'elementor_form_login_fail' );
function elementor_form_login_fail( $username ) {
    $referrer = wp_get_referer();  // where did the post submission come from?
//    $referrer = array();
    // if there's a valid referrer, and it's not the default log-in screen
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
        //redirect back to the referrer page, appending the login=failed parameter and removing any previous query strings
        //maybe could be smarter here and parse/rebuild the query strings from the referrer if they are important
        wp_redirect(preg_replace('/\?.*/', '', $referrer) . '/?login=failed' );
        exit;
    }
}

add_filter( 'authenticate', function( $user, $username, $password ) {
    // forcefully capture login failed to forcefully open wp_login_failed action, 
    // so that this event can be captured
    if ( empty( $username ) || empty( $password ) ) {
        do_action( 'wp_login_failed', $user );
    }
    return $user;
}, 10, 3 );

// to handle even you can handle the error like
add_action( 'wp_login_failed', function( $username ) {
    if ( is_wp_error( $username ) ) {
        // perform operation on error object for empty error
    }
} );
?>

Dodatki działają zgodnie z oczekiwaniami w formularzu logowania na stronie głównej, gdy wystąpi DOWOLNY rodzaj nieudanego logowania, tj. przekierowanie z powrotem do strony logowania, jednocześnie zwracając ?login=failed, aby wywołać komunikat „Logowanie nie powiodło się!” wiadomość na stronie.

Warto przeczytać!  tworzenie wtyczek — udostępnianie platformy użytkownika za pomocą kodu qr na przycisku przypinania

Jednak staram się znaleźć, gdzie popełniam błąd w argumentach. Wdzięczny za wszelką pomoc.


Źródło