将两个add操作合并到一个php中

kknvjkwl  于 2022-10-30  发布在  PHP
关注(0)|答案(1)|浏览(104)

我的问题是我对PHP一无所知。2但是我想把下面的两个动作合并成一个。
第一名

/* Add fee to specific product*/ 
add_action('woocommerce_cart_calculate_fees', 'add_fees_on_ids'); 
function add_fees_on_ids() { 
   if (is_admin() && !defined('DOING_AJAX')) {return;} 
   foreach( WC()->cart->get_cart() as $item_keys => $item ) { 
     if( in_array( $item['product_id'], fee_ids() )) { 
     WC()->cart->add_fee(__('Additional Charge'), 10); 
     } 
   } 
} 
function fee_ids() { 
   return array( 652,645,625 ); 
}

二号

add_action('woocommerce_cart_calculate_fees', function() {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
$percentage = 0.04;
$percentage_fee = (WC()->cart->get_cart_contents_total() + WC()->cart->get_shipping_total()) * $percentage;
 WC()->cart->add_fee(__('Tax', 'txtdomain'), $percentage_fee);
});

因此,我想对一些产品ID收取一定比例的费用(例如652,645,625)。附加费用可以删除。我没有删除,因为我不知道如何删除...

5gfr0r5j

5gfr0r5j1#

/* Add fee to specific product */
add_action('woocommerce_cart_calculate_fees', 'add_fees_on_ids');

function add_fees_on_ids() {
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }
    $has_specifc_product = false;

    foreach (WC()->cart->get_cart() as $item_keys => $item) {
        if (in_array($item['product_id'], fee_ids())) {
            $has_specifc_product = true;
        }
    }
    if ($has_specifc_product) {
        $percentage = 0.04;
        $percentage_fee = (WC()->cart->get_cart_contents_total() + WC()->cart->get_shipping_total()) * $percentage;
        WC()->cart->add_fee(__('Tax', 'woocommerce'), $percentage_fee);
    }
}

function fee_ids() {
    return array(652, 645, 625);
}

相关问题