
通过自定义短代码,可在任意页面精准插入“当前商品总数”动态文本,避免全局输出;只需将函数注册为短代码并在编辑器中调用即可,安全、灵活且不影响主题结构。
在 WordPress 网站中,尤其是使用 WooCommerce 构建的在线商店,经常需要在特定页面(如首页、促销页或关于页面)动态展示当前已上架的商品总数,例如:“Today we have a total of 247 products in our database”。但若直接将查询逻辑写入 functions.php 并使用 echo 输出,会导致内容强制渲染在页面顶部(通常是
起始处),破坏布局且无法控制显示位置。推荐解决方案:使用自定义短代码(Shortcode)
短代码机制专为「按需、可控、可复用」的内容注入而设计,完美契合本需求。以下是完整实现步骤:
✅ 1. 注册短代码函数(添加至主题的 functions.php)
function total_products_func() {
$args = array(
'post_type' => 'product', // 确保为 WooCommerce 默认产品类型
'post_status' => 'publish', // 仅统计已发布商品
'posts_per_page' => -1, // 获取全部(不用于分页,仅计数)
'fields' => 'ids' // 优化性能:只获取ID,避免加载完整对象
);
$products_query = new WP_Query( $args );
$total_count = $products_query->found_posts;
wp_reset_postdata(); // 重置主查询,防止影响后续循环
return sprintf(
'Today we have a total of %d products in our database.',
(int) $total_count
);
}
add_shortcode( 'total_products', 'total_products_func' );? 关键优化说明:
- 使用 'fields' => 'ids' 显著提升性能,避免加载冗余的 post 对象数据;
- wp_reset_postdata() 是必要操作,确保短代码执行后不影响页面其他区域的 WordPress 查询;
- sprintf() 和 (int) 强制类型转换增强安全性与可读性。
✅ 2. 在目标页面中调用短代码
进入 WordPress 后台 → 编辑所需页面(如“Shop Overview”)→ 在可视化或文本编辑器中任意位置插入:
[total_products]
保存后,该位置将动态渲染为:
Today we have a total of 186 products in our database.
在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者
⚠️ 注意事项:
- 若主题或插件禁用了短代码(如某些页面构建器默认过滤),请确认编辑器支持短代码解析(通常 Gutenberg 中需使用「短代码」区块);
- 如需兼容多语言站点,建议结合 __() 或 esc_html__() 进行国际化处理;
- 避免在循环内高频调用此短代码(如产品列表页每行都用),可考虑缓存总数(如使用 wp_cache_set/get)提升效率。
? 进阶提示:
如需在 PHP 模板文件(如 page-shop.php)中调用,可使用 do_shortcode('[total_products]');若需纯数字(无文案),可另建短代码 total_products_count 并仅返回 $products_query->found_posts。
通过该方式,你完全掌控显示位置、文案格式与上下文环境,真正实现「所见即所得」的动态数据嵌入。









