如何在前端展示WooCommerce指定产品的累计营收
WooCommerce前端实时展示累计捐赠总额实现方法
不用找专门的插件,直接加少量自定义代码就能实现,比装第三方插件更轻量、可控性更强。
具体实现步骤
- 添加短代码逻辑
把下面的代码粘贴到当前使用主题的functions.php文件末尾(推荐用子主题操作,避免主题更新时代码被覆盖)。代码会自动统计所有支付完成状态的订单总金额,生成可直接调用的短代码:
- 添加短代码逻辑
// 注册累计筹款额展示短代码 add_shortcode('total_donation_raised', 'get_total_completed_donation_sum'); function get_total_completed_donation_sum() { global $wpdb; // 仅统计已完成支付的有效订单,自动排除待支付、已取消、已退款订单 $total_amount = $wpdb->get_var(" SELECT SUM(meta.meta_value) FROM {$wpdb->prefix}posts AS orders INNER JOIN {$wpdb->prefix}postmeta AS meta ON orders.ID = meta.post_id WHERE orders.post_type = 'shop_order' AND orders.post_status = 'wc-completed' AND meta.meta_key = '_order_total' "); // 按WooCommerce后台设置的币种、格式输出金额 $formatted_amount = wc_price($total_amount ? $total_amount : 0); return '<div class="donation-total">截至目前已筹集:' . $formatted_amount . '</div>'; }
- 前端调用
不需要写复杂的模板代码,根据你要放的位置选对应的调用方式就行:
- 页面、文章、侧边栏自定义HTML块里直接插入短代码:
[total_donation_raised] - 如果要嵌到主题模板文件里,使用模板调用语法:
<?php echo do_shortcode('[total_donation_raised]'); ?>
- 前端调用
- 实时无刷新更新(可选)
如果需要访客不手动刷新页面也能看到最新的筹款金额,给主题加一段简单的JS就行,默认30秒自动拉取一次最新数据,不用调整缓存插件规则:
- 实时无刷新更新(可选)
// 每30秒刷新一次筹款金额 setInterval(function(){ jQuery('.donation-total').load(location.href + ' .donation-total'); }, 30000);
适配提示
- 如果你站点除了捐赠还有其他普通商品售卖,只需要在SQL查询里加一层订单商品ID关联条件,限定统计指定捐赠商品的销售额即可,不会把其他商品的收入算进筹款额里。
- 金额展示格式会自动同步你WooCommerce后台的币种、小数位、货币符号设置,不需要手动调整格式。
- 如果站点开了强缓存,要么把放置筹款金额的页面加入缓存白名单,要么直接用上面的JS自动刷新逻辑即可。
内容的提问来源于stack exchange,提问作者Apple_ManPS3
相关产品推荐
相关产品推荐

