Anonymous
Добавьте стоимость доставки для каждого продукта в зависимости от категории и страны.
Сообщение
Anonymous » 30 сен 2024, 11:34
На моем веб-сайте WooCommerce есть код, который работает, но не очень хорошо.
Расчет по странам работает нормально,
но когда я добавил категории, цены неверны.
Вот мой код:
Код: Выделить всё
add_filter( 'woocommerce_get_discounted_price', 'calculate_discounted_price', 10, 2 );
add_filter( 'woocommerce_cart_item_subtotal', 'display_discounted_price', 10, 2 );
function calculate_discounted_price( $price, $values ) {
global $woocommerce, $product;
$countryArray = array( 'AL', 'AD', 'AT', 'BY', 'BE', 'BA', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FO', 'FI', 'FR', 'DE', 'GI', 'GR', 'HU', 'IS', 'IE', 'IM', 'IT', 'RS', 'LV', 'LI', 'LT', 'LU', 'MK', 'MT', 'MD', 'MC', 'ME', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU', 'SM', 'RS', 'SK', 'SI', 'ES', 'SE', 'CH', 'UA', 'VA', 'RS' );
$catArray = array('handbags','kids','hats');
if( $woocommerce->customer->get_shipping_country() == 'GB' ) {
foreach ( $woocommerce->cart->cart_contents as $product ) :
if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) {
$price += 4.50;
} else {
$price += 8.50;
}
endforeach;
} elseif( in_array($woocommerce->customer->get_shipping_country(), $countryArray) ) {
foreach ( $woocommerce->cart->cart_contents as $product ) :
if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) {
$price += 4.50;
} else {
$price += 12.50;
}
endforeach;
} else {
foreach ( $woocommerce->cart->cart_contents as $product ) :
if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) {
$price += 8.50;
} else {
$price += 18.50;
}
endforeach;
}
return $price;
}
function display_discounted_price( $values, $item ) {
return wc_price( $item[ 'line_total' ] ).'
incl. shipping';
}
Когда я удаляю весь оператор foreach и оставляю только условие страны, все работает нормально, цикл foreach каким-то образом вызывает проблему.
Будем очень признательны за некоторую помощь в этом вопросе.
Спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/411 ... nd-country
1727685272
Anonymous
На моем веб-сайте WooCommerce есть код, который работает, но не очень хорошо. Расчет по странам работает нормально, [b]но когда я добавил категории, цены неверны.[/b] Вот мой код: [code]add_filter( 'woocommerce_get_discounted_price', 'calculate_discounted_price', 10, 2 ); add_filter( 'woocommerce_cart_item_subtotal', 'display_discounted_price', 10, 2 ); function calculate_discounted_price( $price, $values ) { global $woocommerce, $product; $countryArray = array( 'AL', 'AD', 'AT', 'BY', 'BE', 'BA', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FO', 'FI', 'FR', 'DE', 'GI', 'GR', 'HU', 'IS', 'IE', 'IM', 'IT', 'RS', 'LV', 'LI', 'LT', 'LU', 'MK', 'MT', 'MD', 'MC', 'ME', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU', 'SM', 'RS', 'SK', 'SI', 'ES', 'SE', 'CH', 'UA', 'VA', 'RS' ); $catArray = array('handbags','kids','hats'); if( $woocommerce->customer->get_shipping_country() == 'GB' ) { foreach ( $woocommerce->cart->cart_contents as $product ) : if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) { $price += 4.50; } else { $price += 8.50; } endforeach; } elseif( in_array($woocommerce->customer->get_shipping_country(), $countryArray) ) { foreach ( $woocommerce->cart->cart_contents as $product ) : if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) { $price += 4.50; } else { $price += 12.50; } endforeach; } else { foreach ( $woocommerce->cart->cart_contents as $product ) : if ( has_term( $catArray, 'product_cat', $product['product_id'] ) ) { $price += 8.50; } else { $price += 18.50; } endforeach; } return $price; } function display_discounted_price( $values, $item ) { return wc_price( $item[ 'line_total' ] ).' incl. shipping'; } [/code] Когда я удаляю весь оператор foreach и оставляю только условие страны, все работает нормально, цикл foreach каким-то образом вызывает проблему. Будем очень признательны за некоторую помощь в этом вопросе. Спасибо. Подробнее здесь: [url]https://stackoverflow.com/questions/41180664/add-shipping-cost-on-per-product-based-on-category-and-country[/url]