在 Woocommerce 管理优惠券编辑页面上显示自定义数据

对于我在系统中定义的每张优惠券,我想显示使用统计信息:它使用了多少销售额,提供了多少折扣等等......我想在管理中的该优惠券的编辑页面上添加该数据(作为新标签或元框)


所以我有代码来计算使用该优惠券的所有销售额。但是如何将其添加到 woocommerce 管理中的优惠券编辑页面


function get_sales_by_coupon($coupon_id) {


    $args = [

        'post_type' => 'shop_order',

        'posts_per_page' => '-1',

        'post_status' => ['wc-processing', 'wc-completed']

    ];

    $my_query = new WP_Query($args);

    $orders = $my_query->posts;


    $total = 0;


    foreach ($orders as $key => $value) {


        $order_id = $value->ID;

        $order = wc_get_order($order_id);

        $items = $order->get_items('coupon'); 


        foreach ( $items as $item ) {


            if( $item['code'] == $coupon_id ) {

                $total += $order->get_total();

            }

        }

    }

    return 'Total sales for coupon "' . $coupon_id . '": ' . wc_price($total);

}


墨色风雨
浏览 138回答 1
1回答

繁花不似锦

您将获得的订单越多,您的功能就越繁重……相反,最好进行一个直接的更轻量级的 SQL 查询,该查询将获取已定义优惠券代码的订单总数。然后在优惠券编辑页面上使用自定义侧元框,您将能够显示:// Get totals orders sum for a coupon codefunction 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 pagesadd_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 pagesif ( ! 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 文件中。测试和工作。
打开App,查看更多内容
随时随地看视频慕课网APP