title: Joe主题再续前缘1.4版:后台订单统计总额功能详解
date: 2025-09-18 12:00:00
tags: [joe主题, 再续前缘, 订单统计, typecho]
category: 主题教程
cover: https://www.3cym.com/usr/uploads/2025/09/2409291984.jpg
功能一句话
后台「订单管理」顶部实时显示:总订单数、已支付金额、未支付金额等 6 项关键数据,无需插件,开箱即用。
效果预览
核心代码(已内置)
📎 点击查看 /admin/orders.php 完整源码(已折叠)
<?php
require_once TYPECHO_ADMIN_ROOT . 'header.php';
require_once TYPECHO_ADMIN_ROOT . 'menu.php';
require_once __DIR__ . '/widget.php';
$orders_url = '../themes/' . THEME_NAME . '/admin/orders.php';
$panel_url = $options->adminUrl . 'extending.php?panel=' . urlencode($orders_url);
/* ===== 一次性读表 ===== */
$db = Typecho_Db::get();
$rows = $db->fetchAll($db->select()->from('table.orders'));
$totalOrders = $totalPaidOrders = $totalUnpaidOrders = 0;
$totalAmount = $totalPaidAmount = $totalUnpaidAmount = 0; // 单位:分
foreach ($rows as $r) {
$totalOrders++;
$money = intval(round(floatval($r['money']) * 100));
$pay = intval(round(floatval($r['pay_price']) * 100));
$status = (int)$r['status']; // 1 已支付,0 未支付
$totalAmount += $money;
if ($status === 1) {
$totalPaidOrders++;
$totalPaidAmount += $pay;
} else {
$totalUnpaidOrders++;
$totalUnpaidAmount += ($money - $pay);
}
}
/* ===== 转回元 ===== */
$totalAmountYuan = number_format($totalAmount / 100, 2, '.', '');
$totalPaidAmountYuan = number_format($totalPaidAmount / 100, 2, '.', '');
$totalUnpaidAmountYuan = number_format($totalUnpaidAmount / 100, 2, '.', '');
$orders = Typecho\Widget::widget('JoeOrders\Widget');
?>
<style>
.stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:15px;padding:10px;background:#f9f9f9;border:1px solid #ddd;font-size:13px}
.stats>div{flex:1 1 110px;text-align:center}
.stats strong{display:block;font-size:15px;color:#333}
</style>
<!-- 统计卡片 -->
<div class="stats">
<div>总订单 <strong><?php echo $totalOrders; ?></strong></div>
<div>已支付订单 <strong><?php echo $totalPaidOrders; ?></strong></div>
<div>未支付订单 <strong><?php echo $totalUnpaidOrders; ?></strong></div>
<div>订单总额 <strong><?php echo $totalAmountYuan; ?>元</strong></div>
<div>已支付金额 <strong><?php echo $totalPaidAmountYuan; ?>元</strong></div>
<div>未支付金额 <strong><?php echo $totalUnpaidAmountYuan; ?>元</strong></div>
</div>