add_filter('woocommerce_package_rates', 'asc_modify_shipping_costs_by_category_old', 100, 2);
function asc_modify_shipping_costs_by_category_old($rates, $package) {
$shipping_costs = get_option('asc_shipping_costs', []);
$special_cats = get_option('asc_special_categories', []);
if (!$shipping_costs || !is_array($shipping_costs)) return $rates;
$cart_cats = [];
foreach ($package['contents'] as $item) {
$terms = get_the_terms($item['product_id'], 'product_cat');
if ($terms && !is_wp_error($terms)) {
foreach ($terms as $term) {
$cart_cats[] = $term->slug;
}
}
}
$cart_cats = array_unique($cart_cats);
$special_in_cart = array_intersect($cart_cats, $special_cats);
$normal_in_cart = array_diff($cart_cats, $special_cats);
foreach ($rates as $rate_id => $rate) {
$total_cost = 0;
$method_slug = false;
foreach ($shipping_costs as $cat => $cost_data) {
foreach ($cost_data as $method => $price) {
if (strpos($rate_id, $method) !== false) {
$method_slug = $method;
}
}
}
if (!$method_slug) continue;
// هزینه دسته خاص + بیشترین هزینه از سایر دستهها
$special_total = 0;
$normal_max = 0;
foreach ($special_in_cart as $cat) {
if (isset($shipping_costs[$cat][$method_slug])) {
$special_total += floatval($shipping_costs[$cat][$method_slug]);
}
}
foreach ($normal_in_cart as $cat) {
if (isset($shipping_costs[$cat][$method_slug])) {
$normal_max = max($normal_max, floatval($shipping_costs[$cat][$method_slug]));
}
}
$total_cost = $special_total + $normal_max;
if ($total_cost > 0) {
$rates[$rate_id]->cost = $total_cost;
$rates[$rate_id]->taxes = false;
}
}
return $rates;
}
add_filter('woocommerce_package_rates', 'asc_modify_shipping_costs_fixed_special', 100, 2);
function asc_modify_shipping_costs_fixed_special($rates, $package) {
$shipping_costs = get_option('asc_shipping_costs', []);
if (!$shipping_costs || !is_array($shipping_costs)) return $rates;
$special_slugs = ['محافظ-صفحه-تلویزیون', 'wall-mount'];
$cart_cats = [];
foreach ($package['contents'] as $item) {
$terms = get_the_terms($item['product_id'], 'product_cat');
if ($terms && !is_wp_error($terms)) {
foreach ($terms as $term) {
$cart_cats[] = $term->slug;
}
}
}
$cart_cats = array_unique($cart_cats);
$has_special_1 = in_array('محافظ-صفحه-تلویزیون', $cart_cats);
$has_special_2 = in_array('wall-mount', $cart_cats);
foreach ($rates as $rate_id => $rate) {
$method_slug = false;
foreach ($shipping_costs as $cat => $cost_data) {
foreach ($cost_data as $method => $price) {
if (strpos($rate_id, $method) !== false) {
$method_slug = $method;
}
}
}
if (!$method_slug) continue;
$total = 0;
$counted = [];
foreach ($cart_cats as $cat) {
if (isset($shipping_costs[$cat][$method_slug]) && in_array($cat, $special_slugs)) {
$total += floatval($shipping_costs[$cat][$method_slug]);
$counted[] = $cat;
}
}
if (!empty($counted)) {
// دستههای خاص باهم یا با دیگران => جمع قیمتها
foreach ($cart_cats as $cat) {
if (!in_array($cat, $special_slugs) && isset($shipping_costs[$cat][$method_slug])) {
$total += floatval($shipping_costs[$cat][$method_slug]);
break;
}
}
$rates[$rate_id]->cost = $total;
$rates[$rate_id]->taxes = false;
}
}
return $rates;
}
لوازم جانبی لپتاپ و کامپیوتر - پیکاوکالا
لوازم جانبی لپتاپ و کامپیوتر
جستجو در سایت
Loading...
کلمات کلیدی پیشنهادی
اپل
لنوو
شیائومی
لپ تاپ
اسپیکر بلوتوثی
کیبورد بی سیم
party box
kts
موجود است، هم اکنون می توانید سفارش دهید!
ناموجود!