根据WooCommerce中的日期自定义字段应用客户生日折扣



基于我的帐户上每个客户只允许编辑一次自定义字段>编辑WooCommerce中的帐户回答我之前的问题,我正在尝试为客户申请生日折扣。

这是我的代码:

add_action( 'woocommerce_cart_calculate_fees', 'give_birthday_discount', 10, 3 );
function give_birthday_discount( $cart, $user_id, $date = 'now' ) {
if ( is_user_logged_in() && $date == get_user_meta( $user_id, 'birthday_field', true ) ) {

$discount_percentage = 10;
$cart->add_fee( __( 'Birthday Discount', 'woocommerce' ), -( $cart->subtotal * $discount_percentage / 100 ));
}
}

但它给了我一个致命的错误:

Uncaught ArgumentCountError:参数太少,无法执行give_birthday_discount((

所以我需要一些帮助来为客户的生日申请折扣。

$user_id$date不是来自woocommerce_cart_calculate_fees操作挂钩的参数。

使用的PHP函数

  • date-设置本地时间/日期格式
  • d-一个月中的两位数字(带前导零(-01到31
  • m-月份的两位数表示-01(1月(到12(12月(

所以你得到了:

function action_woocommerce_cart_calculate_fees( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

// NOT logged in
if ( ! is_user_logged_in() )
return;
// Get current user id
$user_id = get_current_user_id();

// Get value
$birthday = get_user_meta( $user_id, 'birthday_field', true );

// NOT empty
if ( ! empty( $birthday ) ) {
// Convert
$birthday = date( 'd.m', strtotime( $birthday ) );

// Today
$today = date( 'd.m' );
// Compare, equal to
if ( $birthday == $today ) {
// Discount percentage
$discount_percentage = 10;

// Discount
$cart->add_fee( __( 'Birthday Discount', 'woocommerce' ), - ( $cart->subtotal * $discount_percentage / 100 ), false );      
}       
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1 );

最新更新