gpt4 book ai didi

php - 如何在 woocommerce 中为购物车创建自定义折扣

转载 作者:可可西里 更新时间:2023-11-01 13:07:58 24 4
gpt4 key购买 nike

我正在 WooCommerce 中创建一个插件,但在向 CART/CHECKOUT 页​​面添加自定义折扣时遇到了一个小问题。

如何在不创建优惠券的情况下将自定义折扣应用于购物车?假设我想在购物车页面上提供 5 美元的折扣。我怎样才能做到这一点?

下面是我使用优惠券应用折扣的插件文件中的代码,但我想在不使用优惠券的情况下添加另一个自定义折扣。

插件文件中的 Action Hook :

add_action('woocommerce_calculate_totals',array(&$this,'cart_order_total_action'));

它在插件文件中的作用是:

public function cart_order_total_action(){
if ( is_user_logged_in() ){
global $woocommerce;
global $current_user;
global $wpdb;
$u_id = $current_user->ID;
$table_name = $wpdb->prefix."woocommerce_customer_reward_ms";
$thetable2 = $wpdb->prefix . "woocommerce_customer_reward_cart_ms";
$table_name3 = $wpdb->prefix."woocommerce_customer_reward_points_log_ms";
$data = $wpdb->get_row("SELECT * from $table_name where id=$u_id");
$data2 = $wpdb->get_row("SELECT * from $thetable2");
/* Order Id goes here */
$orders=array();//order ids
$args = array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $current_user->ID,
'post_type' => 'shop_order',
'post_status' => 'publish',
'tax_query'=>array(
array(
'taxonomy' =>'shop_order_status',
'field' => 'slug',
'terms' =>'on-hold'
)
)
);
$posts=get_posts($args);
$orders=wp_list_pluck( $posts, 'ID' );
$order = $orders[0];
/* Order Id ends here */
if($data){
$user_points = $data->points;
$points_set = $data2->woo_pts_set;
$coupon_code = 'wooreward_discount';
if($user_points>=$points_set){
// this following Code is optional and can be removed......as there is no need of if statement here
if ( $woocommerce->cart->has_discount( $coupon_code ) ) {
/*$woocommerce->add_error( __('Coupon Code Already Applied.!!','woocommerce'));*/
return false;
}else{
$woocommerce->cart->add_discount(sanitize_text_field($coupon_code));
$woocommerce->add_message( __('Taxco925 Reward Discount Applied.!!','woocommerce'));
}
}else{
$woocommerce->add_error( __('Not Enough Taxco925 Points.!!','woocommerce'));
}
}else{
$woocommerce->add_error( __('You have have not earned any Taxco925 Points yet.!!','woocommerce'));
}
}
}

如您所见,这一行 $woocommerce->cart->add_discount(sanitize_text_field($coupon_code));将我的折扣添加到购物车。但它在后台使用优惠券来这样做。有什么方法可以在不使用优惠券的情况下添加自定义折扣。

最佳答案

add_action('woocommerce_checkout_order_processed','custom_disount',10,1);
function custom_disount($order_id){
$order = wc_get_order($order_id);
$order_items = $order->get_items();
foreach ($order_items as $order_item_key => $order_item) {
$product = new WC_Product((int) $order_item['product_id']);
$quantity = (int) $order_item['qty'];
$discount=($product->regular_price*30)/100; //30% disount.
wc_update_order_item_meta($order_item_key,'_line_total',($product->regular_price*$quantity)-($discount*$quantity));
}
}

关于php - 如何在 woocommerce 中为购物车创建自定义折扣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22928367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com