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递归模型关联与树状数据输出【方法】