Mostrar un aviso personalizado antes de todos los avisos predeterminados en la página de pago de Woocommerce

3 minutos de lectura

avatar de usuario
ahmadwp

Utilizo el siguiente código a continuación para mostrar un mensaje personalizado a los usuarios de woocommerce no registrados (visitantes) en la página de pago

add_action('woocommerce_before_checkout_form', 'my_custom_message');
function my_custom_message() {
if ( ! is_user_logged_in() ) {
       wc_print_notice( __('This is my custom message'), 'notice' );
    }
}

el código superior recibe este foro, del Sr. @loictheaztec mi enlace de pregunta anterior a continuación:
Mostrar un mensaje personalizado para usuarios invitados en la página de pago de Woocommerce

me gustaría cambiar woocommerce_before_checkout_form en el código para mover mi mensaje a la parte superior (primero) en la página de pago. Pero no tengo idea de cómo hacerlo. Solo conozco esos dos ganchos de abajo. (relacionado con la página de pago):

  • woocommerce_before_checkout_form
  • woocommerce_after_checkout_form

agregué una foto de mi problema

  • Creo que lo que necesitas es anular la plantilla. Anule el valor predeterminado de woocommerce y cree el suyo propio, que ofrece más funcionalidad.

    – rai nalasa

    2 de julio de 2018 a las 14:42

avatar de usuario
LoicTheAztec

Para mostrar su mensaje personalizado en la página de pago antes del mensaje de inicio de sesión de Woocommerce y antes de agregar el mensaje de cupón, utilizará el siguiente código en su lugar:

add_action('template_redirect', 'my_custom_message');
function my_custom_message() {
    if ( ! is_user_logged_in() && is_checkout() && ! is_wc_endpoint_url() ) {
        wc_add_notice( sprintf( __('This is my <strong>"custom message"</strong> and I can even add a button to the right… <a href="https://stackoverflow.com/questions/51138649/%s" class="button alt">My account</a>'), get_permalink( get_option('woocommerce_myaccount_page_id') ) ), 'notice' );
    }
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.

ingrese la descripción de la imagen aquí


Una versión más simple para todos los usuarios solo en la página de pago:

add_action('template_redirect', 'my_custom_message');
function my_custom_message() {
    if ( is_checkout() && ! is_wc_endpoint_url() ) {
        wc_add_notice( __('This is my custom message'), 'notice' );
    }
}

El código va en el archivo function.php de su tema secundario activo (o tema activo). Probado y funciona.

ingrese la descripción de la imagen aquí

  • gracias. funcione correctamente. si convierto este código para mostrar mi mensaje personalizado a todos los usuarios del sitio web (registrados y no registrados), ¿qué debo hacer?

    – ahmadwp

    2 de julio de 2018 a las 15:47

  • solo debes eliminar ! is_user_logged_in() && de la sentencia if…

    – LoicTheAztec

    2 de julio de 2018 a las 15:50


  • +1 – ¡Realmente lo has estado aplastando con SO! ¡Lindo! Como nota – he detenido recomendando poner funciones como esta en el tema functions.php y, en su lugar, hemos comenzado a recomendar la creación de un pequeño complemento que contenga los “requisitos especiales” de un sitio determinado, para garantizar que un sitio sobreviva a una actualización o cambio de tema.

    – nombre_usuario_aleatorio

    2 de julio de 2018 a las 15:50


  • @cale_b… Gracias. Nota: Hay varias formas de personalizar Woocommerce. Pero usa siempre un tema hijo (útil para anular las plantillas de woocommerce y algunos otros archivos de temas) y sobrevive a las actualizaciones. Ahora los complementos son más difíciles de manejarpor lo que usar el archivo function.php en un tema secundario está bien para la mayoría de los usuarios.

    – LoicTheAztec

    2 de julio de 2018 a las 15:55


  • @ahmadsh He agregado un aviso de código más simple para todos los usuarios en la página de pago al final de mi respuesta… Funcionará.

    – LoicTheAztec

    2 de julio de 2018 a las 16:07

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad