Как вывести текущее использование купона пользователями WooCommerce?

Я хотел бы вывести для текущего вошедшего в систему пользователя, сколько раз они использовали определенный код купона.

Для кода купона example_coupon установлено максимальное ограничение использования r, равное 12. Я хотел бы показать пользователю, сколько раз он использовал этот купон, например, в интерфейсе пользователя. Количество использований купона: 3

У меня работает этот код ниже, однако он показывает мне только общую сумму использования купонов всеми пользователями:

function simple_function_1() {
    
    $coupon_code = 'example_coupon';
    global $woocommerce;
    $coupon_data = new WC_Coupon($coupon_code);
    echo ($coupon_data->usage_limit - $coupon_data->usage_count);// return number of remaining coupons
}
add_shortcode( 'own_shortcode1', 'simple_function_1' );

Надеюсь, все это имеет смысл.


person James_Www    schedule 23.07.2020    source источник


Ответы (1)


Отобразится следующий шорткод

  • Сколько раз использовался конкретный купон
  • Лимит использования на пользователя
  • На основе идентификатора текущего пользователя, вошедшего в систему.
// Function that runs when shortcode is called
function users_coupon_usage_shortcode() {
    // Only for logged-in users
    if ( ! is_user_logged_in() ) return;
    
    global $wpdb;
    
    // Coupon code
    $coupon_code = 'test';
    
    // Retrieving the coupon ID
    $coupon_post_obj = get_page_by_title( $coupon_code, OBJECT, 'shop_coupon' );
    $coupon_id       = $coupon_post_obj->ID;
    
    // Get the WC_Coupon Object
    $coupon_data = new WC_Coupon( $coupon_id );
    
    // Get current user id
    $user_id = get_current_user_id();
    
    // Usage limit per user
    $usage_limit_per_user = $coupon_data->get_usage_limit_per_user();
    
    // Get an array of used by count based on post_id, meta_key and meta_value (user_id)
    $used_by_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->postmeta WHERE post_id = '$coupon_id' AND meta_key = '_used_by' AND meta_value = '$user_id'");

    // Output   
    $output = sprintf( __( 'The coupon %s has already been used %s times out of %s', 'woocommerce' ), '"<strong>' . $coupon_code . '</strong>"', $used_by_count, $usage_limit_per_user );
     
    // Output needs to be return
    return $output;
} 
// Register shortcode
add_shortcode( 'users_coupon_usage', 'users_coupon_usage_shortcode' );
person 7uc1f3r    schedule 24.07.2020