Soporte » Guías – Resolución de problemas » Agrgear mensaje de error en la página de contenido protegido con contraseña

  • Resuelto carolina

    (@arkitecturahoy)


    Hola, he personalizado el texto de la página de contenido protegido por contraseña, simplemente modificando la traducción con Loco Translate.

    Pero ahora quisiera saber cómo puedo agregar el mensaje de error cuando el usuario introduce mal la contraseña, ya que por defecto la página de contenido protegido solo hace un refresh si ingresamos mal la clave. Estoy trabajando con un child theme de Astra. Gracias!

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Muy buenas, @arkitecturahoy.

    Para poder hacer esto deberás añadir algo de código a tu sitio.
    He encontrado este código que puedes modificar por tu mensaje y que te puede servir, que se añadiría a tu functions.php.

    Ya nos cuentas si te sirve. Un saludo.

    Iniciador del debate carolina

    (@arkitecturahoy)

    Excelente @bi0xid!

    El código que agregué en mi functions.php resultó así:

    add_filter( 'the_password_form', 'wpse_71284_custom_post_password_msg' );
    
    /**
     * Add a message to the password form.
     *
     * @wp-hook the_password_form
     * @param   string $form
     * @return  string
     */
    function wpse_71284_custom_post_password_msg( $form )
    {
        // No cookie, the user has not sent anything until now.
        if ( ! isset ( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) )
            return $form;
    
        // Translate and escape.
        $msg = esc_html__( 'La contraseña es incorrecta o ya ha sido utilizada.', 'your_text_domain' );
    
        // We have a cookie, but it doesn’t match the password.
        $msg = "<p class='custom-password-message'>$msg</p>";
    
        return $msg . $form;
    }
    
    add_action('init', 'myStartSession', 1);
    add_action('wp_logout', 'myEndSession');
    add_action('wp_login', 'myEndSession');
    function myStartSession() {
        if(!session_id()) {
            session_start();
        }
    }
    function myEndSession() {
        session_destroy ();
    }
    
    if ( post_password_required() ) {
           $session_id = 'wp-postpass_' . get_the_ID();
           //onload
           $current_cookie = wp_unslash($_COOKIE[ 'wp-postpass_' . COOKIEHASH ]);
           //get old cookie 
           $old_cookie = isset( $_SESSION[ $session_id ] ) ? $_SESSION[ $session_id ] : '';
           //set new session
           $_SESSION[ $session_id ] = $current_cookie;
           if ( $current_cookie != $old_cookie && !empty( $old_cookie ) ){
               error_notification('<b>Error!</b> Authentication failed!');
           }
       }

    Lo dejo escrito completo para quien lo necesite en un futuro. Voy a iniciar otro debate aquí para darle formato. Muchas gracias!

    • Esta respuesta fue modificada hace 11 meses, 2 semanas por Rafa Poveda. Razón: formatear código

    ¡Genial! Gracias por dejar la solución aquí. Te he editado el mensaje para que sea más sencillo identificar el código.

    Un saludo :).

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Agrgear mensaje de error en la página de contenido protegido con contraseña’ está cerrado a nuevas respuestas.