특정 카테고리 ( 't-shirts-d', 'socks-d', 'joggers-d', 'boxers-d')에 대해서만 장바구니에있는 제품의 정가를 맞춤 가격으로 변경하고 싶습니다. 제품은 2 가지 카테고리를 공유합니다.
시도해 보았지만 효과가 있었지만 맞춤 가격이 다른 카테고리에도 영향을 미치고 다른 카테고리 ( 't-shirts', 'socks', 'joggers', 'boxers')의 원래 가격 만 표시하고 싶습니다.
이것에 대한 도움이 필요합니다.
지금까지 내 코드는 다음과 같습니다.
function changeprice($html, $cart_item, $cart_item_key){
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
//$thepro = $woocommerce->cart->get_cart();
$product = $cart_item['data'];
$heading_nicename = array('t-shirts-d','socks-d','joggers-d','boxers-d');
//$heading_nicename1 = array('t-shirts','socks','joggers','boxers');
$termsother = $heading_nicename;
foreach( $termsother as $termsnew ) {
if (is_cart()) {
$price_adjusted = 666.666666667; // your adjustments here
$price_base = $cart_item['data']->sale_price;
if (!empty($price_adjusted)) {
if (intval($price_adjusted) > 0) {
$cart_item['data']->set_price($price_adjusted);
} /*else {
$html = '<span class="amount">' . wc_price($price_base)
. '</span>';
}*/
}
}
}
}
}
add_filter('woocommerce_cart_item_price', 'changeprice', 100, 3);
올바른 작동 고리 (업데이트 됨) :
add_action( 'woocommerce_before_calculate_totals', 'change_cart_items_prices', 10, 1 );
function change_cart_items_prices( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
foreach ( $cart->get_cart() as $cart_item ) {
if( has_term( array('t-shirts-d','socks-d','joggers-d','boxers-d'), 'product_cat', $cart_item['product_id'] ) ){
$price_adjusted = 666.666666667; // your adjustments here
if ( ! empty( $price_adjusted ) && intval( $price_adjusted ) > 0) {
$cart_item['data']->set_price( $price_adjusted );
}
}
}
}
코드는 활성 자식 테마 (또는 테마)의 function.php 파일 또는 플러그인 파일에 저장됩니다.
이번에는 모든 것이 장바구니와 결제 페이지에서 작동합니다. 합계도 업데이트됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다