Bouton Ajouter au panier supplémentaire redirigeant vers le paiement sur la boucle WooCommerce
J'ai besoin d'un bouton sur l'archive WooCommerce qui ajoute le produit au panier et qui redirige le client vers la caisse. Je l'appelle "Achat et paiement".
Je m'accroche à l'archive en utilisant l' woocommerce_after_shop_loop_item
action et j'ai défini l' global $product;
argument.
J'obtiens ensuite l'ID du produit et je définis ensuite l'url d'ajout au panier ( atc_url
argument). Le problème est que lorsque vous cliquez sur Ajouter au panier, le produit n'est pas ajouté.
C'est mon code jusqu'à présent et je ne suis pas vraiment sûr de ce qui ne va pas ici.
add_action( 'woocommerce_after_shop_loop_item', 'buy_checkout_on_archive', 20 );
function buy_checkout_on_archive(){
global $product;
$pid = $product->get_id();
$atc_url = wc_get_checkout_url().'?add-to-cart='.$pid;
$button_class = 'loop-checkout-btn'; $button_text = __('Buy & Checkout', 'woocommerce');
if ($product->is_type('simple')){ echo '<a href="'.$atc_url.'" class="'.$button_class.'">'.$button_text.'</a>';
}
}
Réponses
Ce qui suit fera l'affaire, en ajoutant un bouton personnalisé Ajouter au panier sur les archives WooCommerce qui redirige vers la caisse après avoir ajouté le produit au panier:
add_action( 'woocommerce_after_shop_loop_item', 'buy_checkout_on_archive', 20 );
function buy_checkout_on_archive(){
global $product; if ( $product->is_type('simple') ){
$product_id = $product->get_id();
$button_url = '?addtocart='.$product_id;
$button_class = 'button loop-checkout-btn'; $button_text = __('Buy & Checkout', 'woocommerce');
echo '<a href="'.$button_url.'" class="'.$button_class.'">'.$button_text.'</a>'; } } add_action( 'template_redirect', 'addtocart_on_archives_redirect_checkout' ); function addtocart_on_archives_redirect_checkout(){ if( isset( $_GET['addtocart'] ) && $_GET['addtocart'] > 0 ) { WC()->cart->add_to_cart( intval($_GET['addtocart']) );
// Checkout redirection
wp_safe_redirect( wc_get_checkout_url() );
exit;
}
}
Le code va dans le fichier functions.php de votre thème enfant actif (ou thème actif). Testé et fonctionne.