本文介绍如何通过自定义短代码在wordpress woocommerce站点中,仅于特定页面(而非全站)动态显示当前已发布的商品总数,避免直接修改主题模板或污染全局输出。
在WordPress + WooCommerce环境中,有时需要在首页、促销页或公告栏等特定页面展示“今日我们共有 XXX 款商品在售”这类动态文案。若将统计逻辑直接写入 functions.php 并使用 echo 输出(如原始代码所示),会导致内容在所有页面顶部强制渲染——这不仅破坏布局,更违背WordPress的模块化设计原则。
✅ 正确做法是:封装为短代码(Shortcode)。它具备按需调用、上下文隔离、编辑友好三大优势:
将以下代码添加至当前主题的 functions.php 文件末尾(建议使用子主题):
function total_products_func() {
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids' // 仅获取ID,显著提升性能(无需加载完整post对象)
);
$products_query = new WP_Query( $args );
$count = $products_query->found_posts;
// 可选:添加零值友好提示
if ( $count === 0 ) {
return '目前暂无上架商品';
}
return "今天我们共有 " . intval( $count ) . " 款商品在售。";
}
add_shortcode( 'total_products', 'total_products_func' );? 关键优化说明: 添加 'fields' => 'ids' 参数后,WP_Query 仅检索商品ID列表,不加载标题、内容、元数据等冗余字段,查询速度提升50%以上; 使用 intval() 确保输出为整数,防止意外字符注入; 返回字符串而非直接 echo,符合短代码规范,确保内容准确嵌入HTML流。
进入WordPress后台 → 编辑目标页面(如“商品总览”或“限时特惠”页)→ 在可视化编辑器或经典编辑器的文本模式中,于任意位置插入:
[total_products]
保存后,该页面即会动态渲染如:“今天我们共有 247 款商品在售。”

通过短代码机制,您既能精准控制商品总数的展示位置与文案样式,又保持了主题的整洁性与可维护性——这才是WordPress开发的最佳实践。