반응형
카트에 여러 상품을 수량과 함께 카트에 추가하는 Custom add to cart 버튼 : woocmerce
저는 카트에 3개의 제품을 각각 2개의 수량으로 카트에 추가하기 위해 카트에 커스텀 추가 버튼을 만들고 싶습니다.
카트에 3개의 제품을 추가하기 위해 다음과 같이 사용했습니다.
<a id="buy" class="single_add_to_cart_button shop-skin-btn shop-flat-btn alt" href="#">ADD MY PRODUCT</a>
$p_id = 나의 상품 아이디 : 45,99,152
<script>
jQuery('#buy').click(function(e) {
e.preventDefault();
var myStringArray = [<?php echo $p_id; ?>];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
addToCart(myStringArray[i]);
}
return true;
});
function addToCart(p_id) {
$.get('/glassful/?post_type=product&add-to-cart=' + p_id, function() {
$(".show_success").show();
});
}
</script>
결과물을 카트에 추가하는데 수량은 1개만 추가됩니다. 수량을 추가하는 방법을 알려주세요.각 제품에 2개씩 추가하고 싶습니다.
평균 카트에 추가하기를 클릭하면 각각 2개씩 3개의 상품이 카트에 추가됩니다.
미리 도와주셔서 감사합니다..
쿼리 문자열로 수량을 전달해야 합니다.
?post_type=product&add-to-cart=100&quantity=2
당신의 코드를 수정했습니다.
<script>
jQuery('#buy').click(function(e) {
e.preventDefault();
var myStringArray = [<?php echo $p_id; ?>];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
addToCart(myStringArray[i],2);
}
return true;
});
function addToCart(p_id,qu) {
$.get('/?post_type=product&add-to-cart=' + p_id +'&quantity='+qu, function() {
// success
$(".show_success").show();
});
}
</script>
이것이 당신의 문제를 해결해 줄 것이라고 생각합니다.
이 링크를 확인해주세요, 이거 저한테 효과가 있어요 :)
WooCommerce:카트에 추가 쿼리 문자열을 통해 카트에 여러 제품 추가 허용
기능들.php
function woocommerce_maybe_add_multiple_products_to_cart() {
// Make sure WC is installed, and add-to-cart qauery arg exists, and contains at least one comma.
if ( ! class_exists( 'WC_Form_Handler' ) || empty( $_REQUEST['add-to-cart'] ) || false === strpos( $_REQUEST['add-to-cart'], ',' ) ) {
return;
}
// Remove WooCommerce's hook, as it's useless (doesn't handle multiple products).
remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
$product_ids = explode( ',', $_REQUEST['add-to-cart'] );
$count = count( $product_ids );
$number = 0;
foreach ( $product_ids as $product_id ) {
if ( ++$number === $count ) {
// Ok, final item, let's send it back to woocommerce's add_to_cart_action method for handling.
$_REQUEST['add-to-cart'] = $product_id;
return WC_Form_Handler::add_to_cart_action();
}
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product_id ) );
$was_added_to_cart = false;
$adding_to_cart = wc_get_product( $product_id );
if ( ! $adding_to_cart ) {
continue;
}
$add_to_cart_handler = apply_filters( 'woocommerce_add_to_cart_handler', $adding_to_cart->product_type, $adding_to_cart );
/*
* Sorry.. if you want non-simple products, you're on your own.
*
* Related: WooCommerce has set the following methods as private:
* WC_Form_Handler::add_to_cart_handler_variable(),
* WC_Form_Handler::add_to_cart_handler_grouped(),
* WC_Form_Handler::add_to_cart_handler_simple()
*
* Why you gotta be like that WooCommerce?
*/
if ( 'simple' !== $add_to_cart_handler ) {
continue;
}
// For now, quantity applies to all products.. This could be changed easily enough, but I didn't need this feature.
$quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity );
if ( $passed_validation && false !== WC()->cart->add_to_cart( $product_id, $quantity ) ) {
wc_add_to_cart_message( array( $product_id => $quantity ), true );
}
}
}
// Fire before the WC_Form_Handler::add_to_cart_action callback.
add_action( 'wp_loaded', 'woocommerce_maybe_add_multiple_products_to_cart', 15 );
링크를 사용할 수 있습니다.
$product_ids = implode( ',', array( 1, 2, 55 ) );
$url = esc_url_raw( add_query_arg( 'add-to-cart', $product_ids, wc_get_checkout_url() ) );
감사합니다!
제품 ID를 배열에 저장하고 ajax를 요청합니다.
jQuery("#addSelected").click(function() { var arrayLength =
arrayOfAddedProducts.length; jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {action : 'add_item_from_cart','getIDtoAdd' : arrayOfAddedProducts},
success: function (res) {
wc_load_all_products();
}
}); });
기능.기능
function add_item_from_cart() {
foreach ($_POST['getIDtoAdd'] as $productId) {
WC()->cart->add_to_cart( intval($productId), 1, 0, array(), array() );
// WC()->cart->add_to_cart( $product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array() );
}
}
add_action('wp_ajax_add_item_from_cart', 'add_item_from_cart');
add_action('wp_ajax_nopriv_add_item_from_cart', 'add_item_from_cart');
언급URL : https://stackoverflow.com/questions/32471381/custom-add-to-cart-button-to-add-multiple-product-into-cart-with-quantity-wooco
반응형
'programing' 카테고리의 다른 글
새로 고침 트리거 없이 window.location 변경 (0) | 2023.09.12 |
---|---|
phpMyAdmin을 5.1에서 5.2로 업그레이드한 후 서버에 연결할 수 없습니다. (0) | 2023.09.12 |
HTTP 요청에서 화면으로 모든 정보를 인쇄하는 방법(PHP) (0) | 2023.09.12 |
MariaDB my.cnf 설정 중간->교통량이 많음 (0) | 2023.09.12 |
C의 메모리 누출 감지기? (0) | 2023.09.12 |