Untitled
unknown
plain_text
a year ago
1.8 kB
9
Indexable
add_filter('marketking_final_vendor_commission', function($vendor_commission, $order_id, $vendor_id){
// Categories that require minimum $20 admin commission
$min_commission_categories = array(
'cards',
'toys'
);
$order = wc_get_order($order_id);
$order_total = $order->get_total();
$admin_commission = $order_total - $vendor_commission;
// Track which categories are present in the order
$categories_found = array();
// Check each item in the order
foreach ($order->get_items() as $item) {
$product_id = $item->get_product_id();
$product_cats = get_the_terms($product_id, 'product_cat');
if ($product_cats && !is_wp_error($product_cats)) {
foreach ($product_cats as $cat) {
if (in_array($cat->slug, $min_commission_categories)) {
$categories_found[$cat->slug] = true;
}
}
}
}
// Calculate how many unique categories with minimum commission are in the order
$num_min_commission_categories = count($categories_found);
// Calculate minimum required admin commission based on categories
$min_required_admin_commission = $num_min_commission_categories * 20;
// If current admin commission is less than required minimum
if ($admin_commission < $min_required_admin_commission) {
// Adjust vendor commission to ensure minimum admin commission
$vendor_commission = $order_total - $min_required_admin_commission;
// Make sure vendor commission doesn't go negative
if ($vendor_commission < 0) {
$vendor_commission = 0;
}
}
return $vendor_commission;
}, 10, 3);Editor is loading...
Leave a Comment