获取 WooCommerce 产品总销售额
Get WooCommerce Product total sales amount
我创建了一个短代码,可以 returns 循环中的所有产品。我正在寻找一种方法来获得每种产品的总销售额。现在我仍然很难找到解决方案。
这是我的代码:
function loop_ffh_function()
{
?>
<div class="row">
<?php
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'orderby' => 'date');
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();
global $product; ?>
<?php
$productID = get_the_ID();
?>
<div class="column">
<a href="<?php echo get_permalink($loop->post->ID) ?>">
<?php the_post_thumbnail('full'); ?>
</a>
<?php
$target = get_field( 'campaign_target_amount' );
?>
<div class="progress" style="margin-top:20px;">
<div class="progress-bar progress-bar-warning progress-bar-striped active" role="progressbar"
aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:40%">
40%
</div>
</div>
<div class="row">
<div class="col-md-8" style="padding-top:7px;">
Target : <b style="font-size: 18px;">RM <?php echo $target;?></b>
</div>
<div class="col-md-4">
<a class="btn" href="<?php echo get_permalink($loop->post->ID) ?>">Donate Now</a>
</div>
</div>
</div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</div>
<?php
}
add_shortcode('loop_ffh', 'loop_ffh_function');
如何获取每个产品的销售总额并在循环中显示?
您可以使用以下自定义函数获取每个产品的净收入 or/and 总收入:
function get_product_net_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(product_net_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE product_id = %d
",$product_id ) );
}
function get_product_gross_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(product_gross_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE product_id = %d
",$product_id ) );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。
在 WooCommerce 4 及更高版本中测试和工作。
循环内的示例用法:
<?php $amount = get_product_net_revenue( $loop->post->ID ); ?>
然后你就可以在你需要的地方使用这个浮点数变量了。
加法:
要仅获取“已完成”订单的净收入,请使用:
function get_product_net_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(o.product_net_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup o
INNER JOIN {$wpdb->prefix}posts p
ON o.order_id = p.ID
WHERE p.status = 'wc-completed'
AND o.product_id = %d
",$product_id ) );
}
要针对“正在处理”和“已完成”订单替换:
WHERE p.status = 'wc-completed'
和
WHERE p.status IN ('wc-processing','wc-completed')
虽然已经全面涵盖了它;有时您只需要知道总售出数量(例如当价格固定时),在这些情况下您可以将查询替换为以下之一:
SELECT total_sales
FROM {$wpdb->prefix}wc_product_meta_lookup
WHERE product_id = %d
或
SELECT meta_value
FROM {$wpdb->prefix}post_meta
WHERE post_id = %d
AND meta_key LIKE 'total_sales'
我创建了一个短代码,可以 returns 循环中的所有产品。我正在寻找一种方法来获得每种产品的总销售额。现在我仍然很难找到解决方案。
这是我的代码:
function loop_ffh_function()
{
?>
<div class="row">
<?php
$args = array(
'numberposts' => -1,
'post_type' => 'product',
'orderby' => 'date');
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();
global $product; ?>
<?php
$productID = get_the_ID();
?>
<div class="column">
<a href="<?php echo get_permalink($loop->post->ID) ?>">
<?php the_post_thumbnail('full'); ?>
</a>
<?php
$target = get_field( 'campaign_target_amount' );
?>
<div class="progress" style="margin-top:20px;">
<div class="progress-bar progress-bar-warning progress-bar-striped active" role="progressbar"
aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:40%">
40%
</div>
</div>
<div class="row">
<div class="col-md-8" style="padding-top:7px;">
Target : <b style="font-size: 18px;">RM <?php echo $target;?></b>
</div>
<div class="col-md-4">
<a class="btn" href="<?php echo get_permalink($loop->post->ID) ?>">Donate Now</a>
</div>
</div>
</div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</div>
<?php
}
add_shortcode('loop_ffh', 'loop_ffh_function');
如何获取每个产品的销售总额并在循环中显示?
您可以使用以下自定义函数获取每个产品的净收入 or/and 总收入:
function get_product_net_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(product_net_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE product_id = %d
",$product_id ) );
}
function get_product_gross_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(product_gross_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE product_id = %d
",$product_id ) );
}
代码进入活动子主题(或活动主题)的 functions.php 文件。
在 WooCommerce 4 及更高版本中测试和工作。
循环内的示例用法:
<?php $amount = get_product_net_revenue( $loop->post->ID ); ?>
然后你就可以在你需要的地方使用这个浮点数变量了。
加法:
要仅获取“已完成”订单的净收入,请使用:
function get_product_net_revenue( $product_id ) {
global $wpdb;
return (float) $wpdb->get_var( $wpdb->prepare("
SELECT SUM(o.product_net_revenue)
FROM {$wpdb->prefix}wc_order_product_lookup o
INNER JOIN {$wpdb->prefix}posts p
ON o.order_id = p.ID
WHERE p.status = 'wc-completed'
AND o.product_id = %d
",$product_id ) );
}
要针对“正在处理”和“已完成”订单替换:
WHERE p.status = 'wc-completed'
和
WHERE p.status IN ('wc-processing','wc-completed')
虽然
SELECT total_sales
FROM {$wpdb->prefix}wc_product_meta_lookup
WHERE product_id = %d
或
SELECT meta_value
FROM {$wpdb->prefix}post_meta
WHERE post_id = %d
AND meta_key LIKE 'total_sales'