José Cámaras
Este es el código que estoy usando:
if (!is_admin()):
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
//add_action('woocommerce_before_cart_table', 'apply_matched_coupons');
//add_action('woocommerce_before_checkout_form', 'apply_matched_coupons');
function apply_matched_coupons() {
global $woocommerce;
$coupon_code="somecodehere";
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 1 ) {
$woocommerce->cart->add_discount( $coupon_code );
wc_print_notices();
}
}
endif;
El problema que tengo es que cuando voy a la página de pago, el cupón aún se aplica. No se aplica en el carrito, que es el resultado deseado, pero no quiero que se aplique en absoluto en esta condición.
¿Alguna ayuda?
nevio
Según su explicación, parece que debería estar usando el woocommerce_add_to_cart
gancho, que se ejecuta cuando un producto se agrega con éxito al carrito. Tampoco creo que debas usar is_admin()
ya que eso solo verifica si está en una página de administración… no si el usuario actual es un administrador.
Yo haría algo como lo siguiente:
add_action( 'woocommerce_add_to_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
// If the current user is a shop admin
if ( current_user_can( 'manage_woocommerce' ) ) return;
// If the user is on the cart or checkout page
if ( is_cart() || is_checkout() ) return;
$coupon_code="somecodehere";
if ( WC()->cart->has_discount( $coupon_code ) ) return;
WC()->cart->add_discount( $coupon_code );
}
-
Eres increíble. Incluso puedo ver dónde las cosas se complicaron demasiado por mi parte. Ahora necesito refactorizar para hacer WC()->cart->add_discount( $coupon_code ); ejecutar aleatoriamente. muchas gracias amigo
– José Cámaras
16 de noviembre de 2015 a las 2:55
Estoy confundido de qué “condición” estás hablando. ¿Puedes explicar usando algún tipo de historia de usuario, tanto el resultado esperado como el que ocurre? es decir, un usuario visita el carrito, sucede X, luego continúa con el pago, sucede Y, etc.
– rnevio
16 de noviembre de 2015 a las 1:46
@rnevius seguro y ni siquiera estoy seguro de que lo que estoy haciendo funcione porque creo que esto está almacenado en caché de alguna manera. ESTÁ BIEN. Aquí está el panorama general: agregue un código de cupón cuando agregue al carrito. Sin embargo, no aplique el cupón si es administrador o gerente de la tienda en el carrito o en la página de pago. La siguiente etapa, una vez que sé que funciona, es agregarlo aleatoriamente si no es administrador o gerente de la tienda, pero todavía estoy trabajando en ello.
– José Cámaras
16 de noviembre de 2015 a las 2:03