Agregue una casilla de verificación personalizada a woocommerce_checkout_order_review

3 minutos de lectura

avatar de usuario
Alex

Me he estado rascando la cabeza todo el día. Me gustaría agregar una casilla de verificación personalizada dentro de la revisión del pedido antes de realizar el pedido. Aquí está mi código:

add_action( 'woocommerce_checkout_order_review', 'my_checkbox' );

function my_checkbox( $checkout ) {
    echo '<div class="my_split_checkbox"><h2>' . __('Split Order', 'woocommerce') . '</h2>';

    woocommerce_form_field( 'my_split_checkbox', array(
        'type'     => 'checkbox',
        'class'    => array('checkbox_field'),
        'label'    => __('Split Order', 'woocommerce'),
        'required' => false,
    ), $checkout->get_value( 'my_split_checkbox' ));

    echo '</div>';
}

pero la página no se carga completamente. Sin embargo, si reemplazo el gancho por

add_action( 'woocommerce_after_checkout_billing_form', 'my_checkbox' );

luego, la casilla de verificación se muestra al final de los detalles de facturación sin problemas. ¿Cómo puedo hacer que el cuadro de texto se muestre dentro de la revisión del pedido de pago? Idealmente después de la mesa .woocommerce-checkout-review-order-table.

avatar de usuario
Código Mascota

Debe usar cualquiera de los ganchos a continuación en lugar de woocommerce_checkout_order_review para mostrar el campo de la casilla de verificación en función de su prioridad-

woocommerce_review_order_after_cart_contents
woocommerce_review_order_before_shipping
woocommerce_review_order_after_shipping
woocommerce_review_order_before_order_total
woocommerce_review_order_after_order_total

Para más información ir a woocommerce/templates/checkout/review-order.php. Si ya copiaste el templates carpeta como woocommerce a su directorio de temas, entonces puede ser que encuentre el review-order.php allí. Y también tienes que quitar $checkout variables, así como , $checkout->get_value( 'my_split_checkbox' ). Porque esos ganchos no pasan ningún parámetro. Por favor, checa el review-order.phpobtendrá una descripción general.

Entonces todo su código será como a continuación:

add_action( 'woocommerce_checkout_order_review', 'my_checkbox' );

function my_checkbox() {
    echo '<div class="my_split_checkbox"><h2>' . __('Split Order', 'woocommerce') . '</h2>';

    woocommerce_form_field( 'my_split_checkbox', array(
        'type'     => 'checkbox',
        'class'    => array('checkbox_field'),
        'label'    => __('Split Order', 'woocommerce'),
        'required' => false,
    ));

    echo '</div>';
}

Espero que ayude.

  • Hola, gracias por la respuesta rápida. Probé todos los ganchos que mencionaste, pero todos dejan de cargar el resto de la página una vez que llegan woocommerce_form_field. Tengo todas mis funciones en functions.php

    – Alex

    16 mayo 2017 a las 14:55

  • enciende tu WordPress modo de depuración haciendo define('WP_DEBUG', true); en tu wp-config.php y dar aquí el error.

    – Código Mascota

    16 mayo 2017 a las 14:58

  • yo obtengo Error fatal: llamada a una función miembro get_value () en una cadena lo que lleva a ), $checkout->get_value( 'my_split_checkbox' )); ¿Por qué la variable $checkout sería un problema?

    – Alex

    16 mayo 2017 a las 15:14


  • Por favor, compruebe la respuesta actualizada. Y si la respuesta lo ayuda, acepte la respuesta marcando el signo de verificación en el lado izquierdo de la respuesta. @Alex

    – Código Mascota

    16 mayo 2017 a las 15:25


  • Si la respuesta le ayuda, acepte la respuesta marcando el signo de verificación en el lado izquierdo de la respuesta. @Alex

    – Código Mascota

    16 mayo 2017 a las 15:31

¿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