WordPress中显示指定页面上的商品总数(使用短代码实现)
发布时间 - 2026-01-21 00:00:00 点击率:次通过自定义短代码,可在任意页面精准插入“当前商品总数”动态文本,避免全局输出;只需将函数注册为短代码并在编辑器中调用即可,安全、灵活且不影响主题结构。
在 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。
通过该方式,你完全掌控显示位置、文案格式与上下文环境,真正实现「所见即所得」的动态数据嵌入。
# php
# word
# html
# wordpress
# 多语言
# echo
# 强制类型转换
# int
# 循环
# 类型转换
# 对象
# database
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
nodejs redis 发布订阅机制封装实现方法及实例代码
利用python获取某年中每个月的第一天和最后一天
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
文字头像制作网站推荐软件,醒图能自动配文字吗?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
微信h5制作网站有哪些,免费微信H5页面制作工具?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何用PHP快速搭建CMS系统?
如何快速搭建高效WAP手机网站吸引移动用户?
如何在阿里云域名上完成建站全流程?
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
JS弹性运动实现方法分析
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
如何快速启动建站代理加盟业务?
Android okhttputils现在进度显示实例代码
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
西安专业网站制作公司有哪些,陕西省建行官方网站?
Swift中switch语句区间和元组模式匹配
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Linux安全能力提升路径_长期防护思维说明【指导】
利用vue写todolist单页应用
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何获取免费开源的自助建站系统源码?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
php json中文编码为null的解决办法
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
无锡营销型网站制作公司,无锡网选车牌流程?
七夕网站制作视频,七夕大促活动怎么报名?
移动端脚本框架Hammer.js
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】

