Php 在优惠券列表的新列中显示优惠券产生的销售总额

Php 在优惠券列表的新列中显示优惠券产生的销售总额,php,wordpress,woocommerce,backend,coupon,Php,Wordpress,Woocommerce,Backend,Coupon,我使用下面的代码来显示总数 上的新选项卡中给定优惠券代码生成的销售额 WooCommerce“报告” /** *@snippet按优惠券获取总销售额 *@how-to-Get CustomizeWoo.com免费 *@sourcecodehttps://businessbloomer.com/?p=72576 *@作者鲁道夫·梅洛格利 *@TestedWithWooCommerce 3.0.7 */ // ------------------------- // 1. 创建基于优惠券代码计算销售

我使用下面的代码来显示总数 上的新选项卡中给定优惠券代码生成的销售额 WooCommerce“报告”

/**
*@snippet按优惠券获取总销售额
*@how-to-Get CustomizeWoo.com免费
*@sourcecodehttps://businessbloomer.com/?p=72576
*@作者鲁道夫·梅洛格利
*@TestedWithWooCommerce 3.0.7
*/
// -------------------------
// 1. 创建基于优惠券代码计算销售额的函数
功能bbloomer\u按优惠券获取销售($优惠券id){
$args=[
“post_type”=>“shop_order”,
'每页发布'=>'-1',
“后置状态”=>[“wc-processing”、“wc-completed”、“wc-on-hold”]
];
$my\u query=新的WP\u查询($args);
$orders=$my_query->posts;
$total=0;
foreach($key=>$value的订单){
$order\u id=$value->id;
$order=wc\u get\u order($order\u id);
$items=$order->get_items(‘优惠券’);
foreach($items作为$item){
如果($item['code']=$优惠券id){
$total+=$order->get_total();
}
}
}
返回“优惠券的总销售额”.$coupon\u id.“:”.wc\u价格($Total);
}
// -------------------------
// 2. 向WooCommerce“报告”添加新选项卡,并打印优惠券总销售额
添加过滤器(“woocommerce管理报告”、“bbloomer添加报告”选项卡);
功能bbloomer\u添加报告选项卡($reports){
$reports['couples']=数组(
“title”=>”(“优惠券”、“woocommerce”),
“报告”=>数组(
“按代码销售”=>数组(
'title'=>\('Sales by code','woocommerce'),
'description'=>bbloomer\u get\u sales\u by\u优惠券('barmada'),//在此处更改优惠券代码
“隐藏标题”=>false,
'回调'=>'',
),
),
);
返回$报告;
}

但是,我的目的是显示产生的销售总额 在WooCommerce管理优惠券列表的新列中按优惠券

于是我想到:

//添加操作
添加操作('manage_shop_优惠券_posts_custom_column','my_callback_function',10,2);
//定义manage\u shop\u优惠券\u posts\u custom\u列回调
函数my\u回调函数($array,$int){
//让动作魔术在这里发生。。。
$array['CUPPORTS']=array(
“title”=>”(“优惠券”、“woocommerce”),
“报告”=>数组(
“按代码销售”=>数组(
'title'=>\('Sales by code','woocommerce'),
“说明”=>
bbloomer\u通过优惠券('barmada')获取销售信息//在此处更改优惠券代码
“隐藏标题”=>false,
'回调'=>'',
),
),
);
返回$array;
};

不幸的是,这似乎不起作用,非常感谢您在代码中提供的任何帮助。
manage\u edit-shop\u优惠券\u columns
filter hook缺失,这允许您在WooCommerce管理优惠券列表上创建一个新列

然后,
manage\u shop\u coupon\u posts\u custom\u列
操作挂钩允许您向新列添加内容

因此,要在WooCommerce管理优惠券列表的新列中显示优惠券产生的销售总额,请使用:

编辑:

在我发布了我的第一个答案之后,我意识到,你得到的订单越多,你的工作量就越大……而直接SQL查询也就越轻

因为你不必重新发明热水,我在答案代码中找到了完美的解决方案

新答案:

//获取优惠券代码的订单总数
函数按优惠券获取总销售额($优惠券代码){
全球$wpdb;
返回(浮动)$wpdb->get_var($wpdb->prepare(“
选择总和(pm.meta_值)
从{$wpdb->prefix}postmeta pm
内部联接{$wpdb->prefix}p
在pm.post_id=p.id
内部联接{$wpdb->prefix}woocommerce\u order\u items woi
在woi.order\U id=pm.post\U id上
其中pm.meta_key='\u order\u total'
和p.post_状态('wc processing'、'wc completed'、'wc on hold')
和woi.order\u项目名称,如“%s”
和woi.order\u item\u type='优惠券'
“,$优惠券代码”);
}
//添加标题
函数筛选器\u管理\u编辑\u商店\u优惠券\u列($columns){
//添加新列
$columns['total_sales']==uu('total sales','woocommerce');
返回$columns;
}
添加过滤器('manage\u edit-shop\u优惠券列','filter\u manage\u edit\u shop\u优惠券列',10,1);
//填充该列
功能操作\u管理\u商店\u优惠券\u帖子\u自定义\u栏($column,$post\u id){
//比较
如果($column=='total_sales'){
//调用函数
$total=通过优惠券获取总销售额(获取标题($post_id));
//输出
echo wc_价格(合计);
}
}
添加操作('manage_shop_优惠券_posts_custom_column'、'action_manage_shop_优惠券_posts_custom_column',10,2);


前面的答案:这也有效,但随着时间的推移会产生重大影响

//添加标题
函数筛选器\u管理\u编辑\u商店\u优惠券\u列($columns){
//添加新列
$columns['total_sales']==uu('total sales','woocommerce');
返回$columns;
}
添加过滤器('manage\u edit-shop\u优惠券列','filter\u manage\u edit\u shop\u优惠券列',10,1);
//填充该列
功能操作\u管理\u商店\u优惠券\u帖子\u自定义\u栏($column,$post\u id){
//比较
如果($column=='total_sales'){
//获取所有具有特定状态和元密钥'\u购物车折扣'>0(订单中使用的优惠券)的订单
//注意在订单状态下使用WC-…的情况
$orders=wc\u get\u订单(数组(
'status'=>数组('wc processing'、'wc completed'、'wc on hold'),
“元密钥”=>”