Чем больше заказов вы получите, тем больше будет ваша функция ... Вместо этого будет гораздо лучше сделать прямой более легкий SQL-запрос, который получит сумму заказов для определенного кода купона.
Затем, используя настраиваемый боковой метабокс на страницах редактирования купона, вы сможете отобразить следующее:
// Get totals orders sum for a coupon code
function get_total_sales_by_coupon( $coupon_code ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM( pm.meta_value )
FROM {$wpdb->prefix}postmeta pm
INNER JOIN {$wpdb->prefix}posts p
ON pm.post_id = p.ID
INNER JOIN {$wpdb->prefix}woocommerce_order_items woi
ON woi.order_id = pm.post_id
WHERE pm.meta_key = '_order_total'
AND p.post_status IN ('wc-processing','wc-completed')
AND woi.order_item_name LIKE '%s'
AND woi.order_item_type = 'coupon'
", $coupon_code ) );
}
// Adding Meta container to admin shop_coupon pages
add_action( 'add_meta_boxes', 'add_custom_coupon_meta_box' );
if ( ! function_exists( 'add_custom_coupon_meta_box' ) )
{
function add_custom_coupon_meta_box()
{
add_meta_box( 'coupon_usage_data', __('Usage data','woocommerce'), 'custom_coupon_meta_box_content', 'shop_coupon', 'side', 'core' );
}
}
// Displaying content in the meta container on admin shop_coupon pages
if ( ! function_exists( 'custom_coupon_meta_box_content' ) )
{
function custom_coupon_meta_box_content() {
global $post;
$total = get_total_sales_by_coupon( $post->post_title );
printf( __("Total sales: %s"), wc_price( $total ) );
}
}
Код помещается в файл functions.php вашей активной дочерней темы (или активной темы).Проверено и работает.