Woocommerce: 사용자 입력에 따른 맞춤 가격
나는 여기에 글을 올리고 싶지 않았지만 내가 찾던 답을 찾을 수 없었고 나의 정확한 답변을 얻기 위해 다른 매우 유사한 질문들에 대해 언급할 충분한 평판이 없다.
이 투고에서 거의 완벽한 답을 찾았습니다.WooCommerce: 가격을 무시하고 제품을 장바구니에 추가하시겠습니까?
코드 사용:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price');
function add_custom_price( $cart_object ) {
$custom_price = 10; // This will be your custome price
foreach ( $cart_object->cart_contents as $key => $value ) {
$value['data']->price = $custom_price;
}
}
그리고 잘 작동한다구요하드코드된 커스텀 가격을 설정했을 경우.
질문입니다.사용자 입력에 따라 커스텀 가격을 설정하려면 어떻게 해야 하나요?
저는 정보를 전달하기 위해 온갖 방법을 다 써봤지만(쿠키, 글로벌, 세션을 사용하기도 했습니다), 어느 것도 제가 원하는 대로 되지 않았고, 기껏해야 모두 해커였습니다.
문제의 특정 상품은 기부이며, 고객은 사용자가 기부 가격을 설정할 수 있기를 원합니다(단순히 가격대가 설정된 가변 상품을 만드는 것이 아니라).
사용자가 기부 양식을 제출하면 기부 페이지에서 다음과 같이 기부 상품을 카트에 추가합니다.
$donation_success = $woocommerce->cart->add_to_cart($donation_id);
기부 상품은 세트 가격이 0.00이므로 카트에 추가하면 0.00이 됩니다(이 시점에서 가격이 설정되었는지 이후인지 알 수 없습니다).
인수 배열을 받아들이는 add_to_cart 메서드의 마지막 변수를 사용하여 이 시점에서 정보를 전달하려고 시도했지만, 그것도 작동하지 않았습니다.
답은 간단하다고 생각합니다만, 이것을 올바르게 하기 위해서 몇시간이나 노력하고 있습니다만, 효과가 없습니다.아이디어가 없어요.
현재 사용하고 있는 실제 코드는 위 게시물의 답변자가 제시한 코드와는 약간 다르지만 기본적으로 동일하게 동작합니다.
add_action( 'woocommerce_before_calculate_totals', 'woo_add_donation');
function woo_add_donation() {
global $woocommerce;
$donation = 10;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if($cart_item['data']->id == 358 || $cart_item['data']->id == 360){
$cart_item['data']->set_price($donation);
}
}
}
도움이 되는 조언 감사합니다!
나는 우아하지는 않지만 내 목적에 맞는 해결책을 찾았다.
이전에 쿠키를 사용하려고 했는데 쿠키 경로를 설정하지 않았기 때문에 쿠키 경로가 설정된 페이지에서만 사용할 수 있습니다.
기부금액을 쿠키로 설정하고 있습니다.
setcookie("donation", $_GET['donation'], 0, "/");
그럼 이렇게 가격을 책정하겠습니다.
add_action( 'woocommerce_before_calculate_totals', 'woo_add_donation');
function woo_add_donation() {
global $woocommerce;
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if($cart_item['data']->id == 358 && ! empty($_COOKIE['donation'])){
$cart_item['data']->set_price($_COOKIE['donation']);
}
}
}
나도 똑같은 걸 찾고 있었어이 WooCommerce 플러그인(무료 아님)을 찾았습니다.
처음에는 이와 같은 플러그인을 찾기 위해 어떤 검색어를 사용해야 할지 잘 몰랐지만, "WooCommerce name your price"는 유사한 플러그인의 다른 소스에 대한 링크를 불러오는 것 같습니다.
[댓글입니다]쿠키는 어디에 세팅해요?첫 번째 추측으로는 가 GET 메서드를 사용하여 같은 페이지에서 새로고침하고 쿠키를 설정하기 위한 $_GET['donation']를 사용하여 PHP 코드 블록을 제공하는 것입니다.쿠키가 설정되면 페이지를 Woocommerce Cart 페이지로 리다이렉트하여 쇼핑 프로세스를 계속 진행합니다.더 쉬운 방법이 있다면 알려주세요.감사해요.
죄송합니다. 포인트가 부족하여 선택된 답변에 댓글을 달 수 없습니다.
이 코드는 커스텀 가격으로 주문을 작성합니다.
$product = wc_get_product($product_id);
$order = wc_create_order();
try {
$order->add_product($product);
//$order->set_customer_id($user->ID);
$order->set_billing_email($customer_email);
} catch (WC_Data_Exception $e) {
wp_send_json_error("Failed to create order");
}
$order->calculate_totals();
try {
$order->set_total($custom_price); // $custom_price should be float value
} catch (WC_Data_Exception $e) {
wp_send_json_error("Failed to change order details");
}
$order->save();
$order->update_status( 'completed' );
언급URL : https://stackoverflow.com/questions/21742630/woocommerce-custom-price-based-on-user-input
'programing' 카테고리의 다른 글
render : json = > 'string here' 결과 예상 (0) | 2023.04.02 |
---|---|
(노드:9374) 경고:ES 모듈을 로드하려면 "type"을 설정합니다. "module" (0) | 2023.04.02 |
각도 지시어 다른 템플릿 (0) | 2023.04.02 |
for loop에서 ajax 콜백 함수로 인덱스 전달(JavaScript) (0) | 2023.04.02 |
'../build/Release/bson' 모듈을 찾을 수 없습니다. 코드: 'MODULE_NOT_FOUND' } js-bson:순수 JS 버전을 사용하여 c++ bson 확장을 로드하지 못했습니다. (0) | 2023.04.02 |