WooCommerce:가격을 무시하고 제품을 장바구니에 추가하시겠습니까?
$replace_order = new WC_Cart();
$replace_order->empty_cart( true );
$replace_order->add_to_cart( "256", "1");
위의 코드 추가 제품256
카트에1
하지만 제가 안고 있는 문제는 제품 가격을 완전히 무시할 수 있기를 원한다는 것입니다.내가 말할 수 있는 한, 내가 할 수 있는 유일한 것은 쿠폰을 카트에 적용하는 것이다.
가격을 완전히 맞춤형으로 바꿀 수 있는 방법이 있을까요?
카트 내 제품의 가격을 재정의하기 위한 코드입니다.
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;
// for WooCommerce version 3+ use:
// $value['data']->set_price($custom_price);
}
}
유용했으면 좋겠는데...
소개가 필요합니다.if
제품 ID 확인을 위한 문, 위 코드:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
$custom_price = 10; // This will be your custome price
$target_product_id = 598;
foreach ( $cart_object->cart_contents as $value ) {
if ( $value['product_id'] == $target_product_id ) {
$value['data']->price = $custom_price;
}
/*
// If your target product is a variation
if ( $value['variation_id'] == $target_product_id ) {
$value['data']->price = $custom_price;
}
*/
}
}
이 코드를 임의의 장소에 추가하고, 이 코드가 항상 실행 가능한 것을 확인합니다.
이 코드를 추가한 후 다음 전화를 걸면:
global $woocommerce;
$woocommerce->cart->add_to_cart(598);
이 제품만 오버라이드 가격으로 추가되며, 카트에 추가된 다른 제품은 오버라이드 가격으로 무시됩니다.
이것이 도움이 되기를 바랍니다.
위의 모든 코드샘플을 사용해 봤는데 최신 woocommerce 3.0은 위의 예 중 어느 것도 지원하지 않습니다.아래 코드를 사용하여 완벽하게 작동하십시오.
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
$custom_price = 10; // This will be your custom price
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$cart_item['data']->set_price($custom_price);
}
}
woocommerce 버전 3.0.0 출시 후 set_price($price) 기능을 사용하여 카트 추가 시 제품 가격이 업데이트됩니다.예를 다음에 나타냅니다.
add_action( 'woocommerce_before_calculate_totals', 'mj_custom_price' );
function mj_custom_price( $cart_object ) {
$woo_ver = WC()->version;
$custom_price = 10;
foreach ( $cart_object->cart_contents as $key => $value )
{
if($woo_ver < "3.0.0" && $woo_ver < "2.7.0")
{
$value['data']->price = $custom_price;
}
else
{
$value['data']->set_price($custom_price);
}
}
}
대단히 고맙습니다
Wordpress와 Woocommerce의 최신 버전은 다음과 같이 사용하십시오.
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
$custom_price = 5;
$value['data']->set_price($custom_price);
}
}
구글에서 여기로 온 모든 사람을 위해.위 내용은 WooCommerce 3.0.1로 업데이트 되었기 때문에 폐지되었습니다.
이제 위의 방법 대신set_price
대신price
다음은 예를 제시하겠습니다.
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']->set_price = $custom_price;
}
}
이것이 장래에 사람들에게 도움이 되기를 바랍니다.
이렇게 했습니다. 먼저 커스텀 가격을 cart_item_data witch에 추가하여 커스텀 데이터를 카트 항목에 저장한 후 woocommerce_before_calculate_totals를 사용하여 카트를 루프하고 이전에 추가한 가격을 추가합니다.
function add_donation_to_cart() {
$cart_item_data = array('price' => $_REQUEST['donate_amount']);
$woocommerce->cart->add_to_cart( 5395, 1, '', array(), $cart_item_data);
}
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart ) {
foreach ( $cart->cart_contents as $key => $value ) {
$value['data']->price = $value['price'];
}
}
WooCommerce 2.5에서는 이것이 2개의 부분으로 이루어진 프로세스라는 것을 알았습니다.첫 번째 단계는 woocommerce_add_cart_item 필터를 통해 카트에 추가되었을 때 가격의 런타임 표시를 변경하는 것입니다.두 번째 부분은 woocommerce_get_cart_item_from_session 필터를 통해 체크아웃 중에 읽히는 영속적인 세션 데이터를 설정하는 것입니다.이것은 계산 합계 필터(woocommerce_before_calculate_totals 등)가 WooCommerce에서 매우 자주 실행되기 때문에 후크하는 것보다 빠른 것 같습니다.
자세한 내용은 이쪽: 장바구니에 추가하는 동안 가격을 변경합니다.
의 각 별도에서 카트 아이템 키를 세션 .woocommerce_add_to_cart
이러한 세션 값을 사용하여 올바른 카트 총계를 계산하고 변경된 가격을 주문 항목에도 표시할 수 있습니다.
다음을 사용할 수 있습니다.
add_filter( 'woocommerce_cart_item_price', 'kd_custom_price_message' );
function kd_custom_price_message( $price ) {
$textafter = ' USD';
return $price . $textafter;
}
언급URL : https://stackoverflow.com/questions/12327251/woocommerce-add-product-to-cart-with-price-override
'programing' 카테고리의 다른 글
스프링 부트 테스트가 실패하고 "Servlet Web Server Factory bean이 없어 Servlet Web Server Application Context를 시작할 수 없습니다. (0) | 2023.03.26 |
---|---|
Swift에서 JWT(JSON Web 토큰) 토큰을 디코딩하려면 어떻게 해야 하나요? (0) | 2023.03.26 |
config()에 $location을 삽입할 수 없는 이유는 무엇입니까? (0) | 2023.03.26 |
ToString 메서드에 대한 오버로드가 없습니다.일자를 캐스팅할 때 1개의 인수를 사용합니다. (0) | 2023.03.26 |
웹 응용 프로그램이 [Timer-0]라는 이름의 스레드를 시작한 것으로 보이지만 중지하지 못했습니다. (0) | 2023.03.26 |