Actualizar los métodos de envío en caché en el evento de ajax de actualización de pago en Woocommerce

2 minutos de lectura

avatar de usuario
ClaveVer

Acabo de implementar una solución de envío personalizada.

Depende del precio total de los artículos en el carrito. Por ejemplo:

if total is < 20   -> display free shipping
if total is >= 20  -> paid delivery

Pero tengo un problema con el caché de woocommerce… Creo que el hecho es que woocommerce almacena en caché las tarifas de envío, sin tener en cuenta el cambio en la cantidad del pedido. Entonces el problema es con el calcular_envío_para_paquete() ¿método?

Si habilito el modo de depuración de envío, todo funciona correctamente, sin actualizaciones.

Intenté deshabilitar el caché, sin éxito.

add_action('woocommerce_checkout_update_order_review', function() {
    $packages = WC()->cart->get_shipping_packages();
    foreach ($packages as $key => $value) {
        $shipping_session = "shipping_for_package_$key";
        unset(WC()->session->$shipping_session);
    }
}, 10, 2);

Asi que. ¿Alguna vez has tenido este tipo de problema? ¿Cómo resolviste? ¡Muchas gracias por cualquier ayuda!

  • Difícil de responder a esta pregunta con los pocos códigos provistos. No sabemos cómo se realizan las personalizaciones de su método de envío y qué implica. Por lo tanto, debe proporcionar todo el código relacionado, ya que con el código proporcionado, no es comprobable.

    – LoicTheAztec

    5 de noviembre de 2018 a las 10:41

avatar de usuario
LoicTheAztec

Actualizado: Hay algunos errores en su código, en su lugar intente lo siguiente:

add_action('woocommerce_checkout_update_order_review', 'checkout_update_refresh_shipping_methods', 10, 1);
function checkout_update_refresh_shipping_methods( $post_data ) {
    $packages = WC()->cart->get_shipping_packages();
    foreach ($packages as $package_key => $package ) {
         WC()->session->set( 'shipping_for_package_' . $package_key, false ); // Or true
    }
}

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

Pero actualizará la memoria caché de los métodos de envío cada vez que se produzca un evento de actualización de pago de ajax.

Relacionado: campo de pago personalizado y métodos de envío interacción ajax en Woocommerce 3

  • ¡Gracias, probaré inmediatamente!

    – KeySee

    5 de noviembre de 2018 a las 10:33

  • Creo que ambos funcionarán, verifica si es una matriz. clase-wc-shipping.php:324

    – KeySee

    5 de noviembre de 2018 a las 10:44

  • Sí, trabajando en eso. Parece que el problema es que la cantidad de elementos no se actualiza en lugar del caché… .-. Estoy usando WC()->cart->get_cart() dentro Calcular costo de envío

    – KeySee

    5 de noviembre de 2018 a las 11:05

  • @KeySee agregue su código de funciones en su pregunta, ya que en realidad nadie puede ayudar más que eso.

    – LoicTheAztec

    5 de noviembre de 2018 a las 11:22

  • @KeySee Entonces, ¿qué fue? tengo curiosidad…

    – LoicTheAztec

    5 de noviembre de 2018 a las 13:13

¿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