¿Cómo agregar un botón de compra ahora de Woocommerce?

5 minutos de lectura

avatar de usuario de charlie_k
charlie_k

Yo deseo AGREGAR un botón “comprar ahora” en la página del producto y redirigir a la página de pago después de hacer clic en él sin añadir el producto al carrito. Me di cuenta de que se había hecho una pregunta similar antes de Woocommerce: botones Agregar al carrito y Comprar ahora en las páginas de productos

Pero este método solo redirige a la página de pago pero aún agrega el producto correspondiente al carrito.

¿Cómo puedo conseguir esto? Muchas gracias.

——actualización 7/10/2015———-

Creo que la mejor manera de hacerlo es crear otra instancia de carrito y pago, pero no sé cómo implementarlo, ¿alguien podría ayudarme?

http://wordpress.org/extend/plugins/woocommerce/

  • Su requisito no tiene sentido. ¿Cuál es el punto de redirigir al cliente a una página de pago vacía? Si el carrito está vacío, el proceso de pago lo redirigirá de nuevo al carrito. Proporcione más información sobre por qué desea lograr esto, podría haber otra solución al problema.

    – Anand Shah

    14 de septiembre de 2015 a las 8:58

  • @Anand Gracias por responder. Mi intención de este botón ‘comprar ahora’ es saltar a través de la Añadir a la cesta función. Por ejemplo, si ya hay productos A, B en el carrito, y hago clic en el botón ‘comprar ahora’ en otra página de producto de C, A y B en el carrito seguirán en el carrito y no se pagarán, Solamente C estará en la lista de productos de la página de pago y también C no se agregará al carrito. ¿Tiene sentido?

    – charlie_k

    14/09/2015 a las 23:09

  • ¿Resolviste tu problema? Me gustaría lograr el mismo objetivo.

    – José Augustinho

    25 de agosto de 2020 a las 19:04

Puedes usar el gancho de WooCommerce woocommerce_after_add_to_cart_button. Este gancho agregará contenido después del botón “Agregar al carrito”.

Si el cliente hace clic en este botón, el producto debe agregarse al carrito y el cliente debe ser enviado a la página de pago.

Agregue el siguiente código en su tema hijo functions.php

/* Create Buy Now Button dynamically after Add To Cart button */
    function add_content_after_addtocart() {
    
        // get the current post/product ID
        $current_product_id = get_the_ID();
    
        // get the product based on the ID
        $product = wc_get_product( $current_product_id );
    
        // get the "Checkout Page" URL
        $checkout_url = WC()->cart->get_checkout_url();
    
        // run only on simple products
        if( $product->is_type( 'simple' ) ){
            echo '<a href="'.$checkout_url.'?add-to-cart=".$current_product_id."" class="buy-now button">Buy Now</a>';
            //echo '<a href="'.$checkout_url.'" class="buy-now button">Buy Now</a>';
        }
    }
    add_action( 'woocommerce_after_add_to_cart_button', 'add_content_after_addtocart' );

  • Esto funciona muy bien para productos simples, pero no parece mostrarse en productos variables. ¿Es esa una limitación conocida y los productos variables deben manejarse de manera diferente?

    – Stephen R. Smith

    7 de mayo de 2021 a las 5:51

Una vez usé este código

<?php $add_to_cart = do_shortcode('[add_to_cart_url id="25"]'); ?>
<a href="'. $add_to_cart .'"><img src="'. get_template_directory_uri() . '/img/small-cart.png" />Buy Now</a>

WooCommerce también tiene una gran lista de códigos cortos para facilitar el desarrollo de temas de comercio electrónico. Puedes echar un vistazo aquí: http://docs.woothemes.com/document/woocommerce-shortcodes/

  • Pero quiero redirigir a la página de pago sin agregando el producto al carrito.

    – charlie_k

    14 de septiembre de 2015 a las 5:47

Este fragmento de código debería funcionar bien con productos simples y variables, que crean un botón dinámico junto al botón Agregar al carrito en Woocommerce.

Agregue este código en el archivo ‘functions.php’ de su tema secundario y estará listo.

/* Dynamic Button for Simple & Variable Product */

/**
 * Main Functions
*/

function sbw_wc_add_buy_now_button_single()
{
    global $product;
    printf( '<button id="sbw_wc-adding-button" type="submit" name="sbw-wc-buy-now" value="%d" class="single_add_to_cart_button buy_now_button button alt">%s</button>', $product->get_ID(), esc_html__( 'Buy Now', 'sbw-wc' ) );
}

add_action( 'woocommerce_after_add_to_cart_button', 'sbw_wc_add_buy_now_button_single' );



/*** Handle for click on buy now ***/

function sbw_wc_handle_buy_now()
{
    if ( !isset( $_REQUEST['sbw-wc-buy-now'] ) )
    {
        return false;
    }

    WC()->cart->empty_cart();

    $product_id = absint( $_REQUEST['sbw-wc-buy-now'] );
    $quantity = absint( $_REQUEST['quantity'] );

    if ( isset( $_REQUEST['variation_id'] ) ) {

        $variation_id = absint( $_REQUEST['variation_id'] );
        WC()->cart->add_to_cart( $product_id, 1, $variation_id );

    }else{
        WC()->cart->add_to_cart( $product_id, $quantity );
    }

    wp_safe_redirect( wc_get_checkout_url() );
    exit;
}

add_action( 'wp_loaded', 'sbw_wc_handle_buy_now' );

/* Dynamic Button for Simple & Variable Product Closed */

Créditos: https://perfiles.wordpress.org/navarroido/

  • Funciona perfectamente para productos simples y variables. Pero no tiene en cuenta la selección de cantidad. ¿Sabes cómo se puede arreglar?

    – MS Shohan

    21 de agosto a las 3:12

Pruebe este código en su tema functions.php, lo redirigirá a la página de pago después de hacer clic en el botón Agregar al carrito

function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
}

<a href="https://stackoverflow.com/questions/32557492/<?php echo esc_url(home_url("https://stackoverflow.com/" ));?>cart/?add-to-cart=<?php the_ID();?>" class="btn btn-primary"><?php esc_html_e('Buy it now!', 'your-domain'); ?></a>

¿Ha sido útil esta solución?