Hola @luishgc93
Te paso por donde tienen que ir los tiros:
/* Enviar directamente al pago si cumple condición */
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
$checkout_url = get_permalink(get_option(‘woocommerce_checkout_page_id’));;
if ( isset( $_REQUEST['add-to-cart'] ) ) {
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_REQUEST['add-to-cart'] );
//En $product_id tienes la id del producto que estás agregando, pudiendo llamar a la clase WC_Product para obtener más info, al get_post_meta para obtener algún campo o a has_term( 'slugcategoria', 'product_cat', $product_id) para saber si está en alguna categoría.
if ( TUCONDICIONSECUMPLE ){
return $checkout_url;
}
}
}
Espero que te sirva para solucionar tu duda y en caso afirmativo cierres el debate para ayudarnos a mantener el foro al día.
Iniciador del debate
ele
(@luishgc93)
gracias por tu ayuda @adriandegrafreak pero no me funciona el código no hace nada 🙁
/* Enviar directamente al pago si cumple condición */
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
$checkout_url = get_permalink(get_option(‘woocommerce_checkout_page_id’));;
if ( isset( $_REQUEST['add-to-cart'] ) ) {
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_REQUEST['add-to-cart'] );
if ( $product_id == 1573 ){
return $checkout_url;
}
}
}
-
Esta respuesta fue modificada hace 4 años, 7 meses por ele.
Hola,
El código lo he hecho al vuelo no lo he probado, veo que al final de la linea $checkout_url = he puesto dos puntos y coma.
/* Enviar directamente al pago si cumple condición */
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
$checkout_url = get_permalink(get_option('woocommerce_checkout_page_id'));
if ( isset( $_REQUEST['add-to-cart'] ) ) {
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_REQUEST['add-to-cart'] );
if ( $product_id == 1573 ){
return $checkout_url;
}
}
}
Ponte var_dump($_REQUEST['add-to-cart']);exit;
y mira la pestaña de red > XHR para detectar que está devolviendo, al igual que var_dump($product_id);exit;
y var_dump($checkout_url);exit;
para saber si está mirando bien y el valor que tiene los diferentes campos que intervienen.
Iniciador del debate
ele
(@luishgc93)
@adriandegrafreak no entiendo con lo que me dices de ponte en var_dump :/
el codigo sigue fallando quitando el punta coma demás
-
Esta respuesta fue modificada hace 4 años, 7 meses por ele.
Hola,
Buenas,
He corregido las comillas de woocommerce_checkout_page_id que eran las tipograficas y no la comilla simple. También he puesto un apunte en el return.
He hecho una prueba en local y me funciona, cuando el el $product_id coincide con el que marcas devuelve $checkout_url
add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
$checkout_url = get_permalink(get_option('woocommerce_checkout_page_id'));
if ( isset( $_REQUEST['add-to-cart'] ) ) {
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_REQUEST['add-to-cart'] );
if ( $product_id == 1573 ){
return $checkout_url;
}else{
//return url del producto, página donde quieres que se quede o para configurado en woocommerce
}
}
}
Como te digo esto en local me está funcionando, si no actua igual puede ser que tengas algún plugin u otro codigo que tb esté afectando al comportamiento de añadir al carro.
Ya me dices que tal.
Iniciador del debate
ele
(@luishgc93)
ahora si funciona !! 😀 gracias @adriandegrafreak y una cuestión más ,
donde
}else{
//return url del producto, página donde quieres que se quede o para configurado en woocommerce
}
si lo dejo asi tal cual no haría nada para el resto de productos ? no? por lo que veo, para el resto de productos si actua con normalidad, pasa por el carrito y demás.
Exacto @luishgc93
Esto sería por si quisieras forzar el comportamiento en los que el if devuelve FALSE.
Si lo dejas así y hace el comportamiento que necesitas ya está bien 😉
Iniciador del debate
ele
(@luishgc93)
@adriandegrafreak genial, muchas gracias 🙂