php - shortcodes - url añadir al carrito woocommerce
Woocommerce: botones Añadir al carro y Comprar ahora en las páginas del producto (2)
Después de mucho buscar, me sorprendió que esto no sea algo estándar. Aquí estaba mi solución:
Utilice un enlace como "woocommerce_single_product_summary"
O copie wp-content / plugins / woocommerce / templates / single-product / add-to-cart / simple.php en su tema secundario como: wp-content / themes / child-theme / woocommerce / single-product / add- to-cart / simple.php
Edite el archivo y agregue el siguiente código donde desea que aparezca el botón:
<div class="express-checkout-wrapper">
<a id="dc_express_checkout" href="/checkout/?add-to-cart=<?php echo get_the_ID(); ?>">
Purchase
</a>
</div>
Ahora el único problema es que el botón lo llevará a pagar y agregar el producto correcto pero sin la cantidad correcta si lo cambió así que usé js en mi archivo custom.js que está en cola en el pie de página:
// Add and change quantity to express checkout button when the quantity is updated
if($(''.cart .qty'').length){
var originalUrl = $(''#dc_express_checkout'').attr(''href'');
$(''.cart .qty'').change(function(){
var url = originalUrl + ''&quantity='' + $(this).val();
$(''#dc_express_checkout'').attr(''href'', url);
});
}
Puedes cambiar la URL desde:
href="/checkout/?add-to-cart=<?php echo get_the_ID(); ?>"
a:
href="/cart/?add-to-cart=<?php echo get_the_ID(); ?>"
Si desea que el botón se dirija al carro en lugar de la página de pago.
Estoy intentando agregar un botón Comprar ahora en WooCommerce en la página del producto, por lo que hay dos botones:
- añadir a la cesta
- comprar ahora (que agregará el producto al carro y lo redirigirá a la caja)
Todavía quiero agregar al carrito para que funcione como siempre.
¿Cómo puedo conseguir esto? Muchas gracias.
Pude resolver esto al encontrar esta publicación en el blog http://samplacette.com/skip-shopping-cart-in-woocommerce/ .
Si alguien más descubre que está luchando por implementar esto, así es como lo hice (quizás no sea la mejor solución, pero a mí me funciona):
Copié el siguiente texto en el tema functions.php
/** * Set cart item quantity action *
* Only works for simple products (with integer IDs, no colors etc) *
* @access public
* @return void */
function woocommerce_set_cart_qty_action() {
global $woocommerce;
foreach ($_REQUEST as $key => $quantity) {
// only allow integer quantities
if (! is_numeric($quantity)) continue;
// attempt to extract product ID from query string key
$update_directive_bits = preg_split(''/^set-cart-qty_/'', $key);
if (count($update_directive_bits) >= 2 and is_numeric($update_directive_bits[1])) {
$product_id = (int) $update_directive_bits[1];
$cart_id = $woocommerce->cart->generate_cart_id($product_id);
// See if this product and its options is already in the cart
$cart_item_key = $woocommerce->cart->find_product_in_cart( $cart_id );
// If cart_item_key is set, the item is already in the cart
if ( $cart_item_key ) {
$woocommerce->cart->set_quantity($cart_item_key, $quantity);
} else {
// Add the product to the cart
$woocommerce->cart->add_to_cart($product_id, $quantity);
}
}
}
}
add_action( ''init'', ''woocommerce_set_cart_qty_action'' );
Y luego modifiqué el tema /woocommerce/single-product/add-to-cart/simple.php (asegúrese de que no midió los archivos del plugin así que haga una copia y pegue los archivos de su tema en una carpeta de woocommerce) a la siguiente (tenga en cuenta que eliminé mi entrada de cantidad de mi código por lo que si la necesita, asegúrese de volver a trabajar el código para que funcione):
<form class="cart single-product" method="post" enctype=''multipart/form-data''>
<?php do_action( ''woocommerce_before_add_to_cart_button'' ); ?>
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
<button type="submit" class="single_add_to_cart_button button alt cart-buttton add-to-cart"><?php echo $product->single_add_to_cart_text(); ?></button>
<?php do_action( ''woocommerce_after_add_to_cart_button'' ); ?>
</form>
<form class="cart single-product" method="post" enctype=''multipart/form-data'' action="/checkout?set-cart-qty_<?php echo $product->id;?>=1">
<button type="submit" class="single_add_to_cart_button button alt cart-buttton buy-now">Buy Now</button>
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
</form>
Agregué otro botón al lado del botón Agregar al carro existente pero separando el formulario. La entrada del blog menciona que puede agregar un hipervínculo en su lugar, pero lo anterior funcionó para mí en términos de la forma en que necesitaba personalizar la página (un poco más larga)
Del blog:
Instrucciones de uso:
Cree un hipervínculo con un argumento de cadena de consulta de la siguiente manera:? Set-cart-qty_ = ¿Dónde está la identificación numérica de su producto (algo así como "167") y es la cantidad que desea establecer en el carrito de compras del usuario (muy probablemente esto solo será "1").
URL de ejemplo para enviar al usuario a la salida con exactamente un artículo del producto con ID "167" en el carro:
Espero que lo anterior ayude a cualquiera que tenga un problema similar al que tuve.