WooCommerce Loop'ta ödemeye yönlendiren ek Sepete Ekle düğmesi
WooCommerce arşivinde ürünü sepete ekleyen ve müşteriyi kasaya yeniden yönlendiren bir düğmeye ihtiyacım var. Ben buna "Satın Al ve Satın Al" diyorum.
woocommerce_after_shop_loop_item
Eylemi kullanarak arşive bağlanıyorum ve global $product;
argümanı tanımladım .
Daha sonra ürün kimliğini alırım ve ardından sepete ekle url ( atc_url
bağımsız değişken) tanımlarım . Sorun, sepete ekle'ye tıklandığında ürünün eklenmemesidir.
Şimdiye kadarki kodum bu ve burada neyin yanlış olduğundan emin değilim.
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>';
}
}
Yanıtlar
Aşağıdakiler, ürünü sepete ekledikten sonra ödemeye yönlendiren WooCommerce arşivlerine özel bir sepete ekle düğmesi ekleyerek hile yapacak:
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;
}
}
Kod, aktif alt temanızın (veya aktif temanızın) functions.php dosyasına girer. Test edildi ve çalışıyor.