반응형
WordPress WooCommerce - WC_Cart 클래스를 사용하여 카트에 변수 제품 추가
WordPress 플러그인인 WooCommerce의 카트에 변수 제품을 추가하려고 합니다.
지금까지 다음과 같은 싱글/심플한 제품을 추가할 수 있었습니다.
$woocommerce->cart->add_to_cart( [product_id], [quantity] );
그러나 WC_Class에서 기능 서명을 보면 다음과 같습니다.
function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {
variation_id의 입력을 허용하는 함수를 명확하게 볼 수 있습니다.
다음과 같은 방법으로 null과 정수의 모든 조합을 시도했습니다.
$woocommerce->cart->add_to_cart( 24, 1, 28, null, null );
헛수고다.
또, WooCommerce의 제품 페이지에 의해서 행해진 포스트 이벤트를 재현하려고 하는, 저 자신의 해박한 어프로치를 시도했지만, 다시 한번 운이 없었습니다.
<a id="buy_v" href="#">Buy Variable Product !</a>
<script>
$('#buy_v').click(function(e) {
e.preventDefault();
addToCartV(24,26,'Red',1);
return false;
});
function addToCartV(p_id, v_id, c, q) {
$.ajax({
type: 'POST',
url: '/wp/?product=tee1&add-to-cart=variation&product_id='+p_id,
data: { 'attribute_colour': c,
'variation_id': v_id,
'quantity': q,
'product_id': p_id},
success: function(response, textStatus, jqXHR){
// log a message to the console
console.log("It worked!");
}/*,
dataType: 'JSON'*/
});
}
</script>
제가 어디가 잘못됐는지 누가 좀 알려주시겠어요?감사해요.
위의 두 예 모두 실제로 정상적으로 동작하지만 WooCommerce 자체 카트에 올바르게 표시되지 않을 뿐입니다.
올바르게 표시되도록 하려면 WooCommerce 자체 카트의 변동을 나타내는 네 번째 파라미터의 배열을 전달합니다.
$arr = array();
$arr['Color'] = 'Green';
$woocommerce->cart->add_to_cart( 24, 1, 28, $arr, null );
비슷한 것을 시도하는 다른 사람을 위해, 제 접근 방식은 이렇습니다.
다음 내용을 포함하는 Ajax를 통해 호출할 스크립트를 만들었습니다.
<?php
require_once("../../../wp-blog-header.php");
header("HTTP/1.1 200 OK");
global $woocommerce;
$quantity = (isset($_REQUEST['qty'])) ? (int) $_REQUEST['qty'] : 1;
$product_id = (int) apply_filters('woocommerce_add_to_cart_product_id', $_REQUEST['pid']);
$vid = (int) apply_filters('woocommerce_add_to_cart_product_id', $_REQUEST['vid']);
if ($vid > 0) $woocommerce->cart->add_to_cart( $product_id, $quantity, $vid );
else $woocommerce->cart->add_to_cart( $product_id, $quantity );
이렇게 하면 카트에 제품 종류가 성공적으로 추가됩니다.
언급URL : https://stackoverflow.com/questions/10802172/wordpress-woocommerce-add-a-variable-product-to-cart-using-the-wc-cart-class
반응형
'IT' 카테고리의 다른 글
스프링 부츠 - 이미 부모 폼을 가지고 있는 경우 부모 폼 (0) | 2023.02.14 |
---|---|
HttpResponse에서 json 가져오기 (0) | 2023.02.14 |
MongoDB에서 Elastic Search를 사용하는 방법 (0) | 2023.02.14 |
Newtonsoft의 JSON Serializer에서 JSON DateTime 해석 (0) | 2023.02.14 |
Ruby 객체 및 JSON 시리얼화(레일 없음) (0) | 2023.02.14 |