0

0

WooCommerce+WCFM:在供应商店铺页面按商品分类展示产品

心靈之曲

心靈之曲

发布时间:2026-02-19 14:13:00

|

735人浏览过

|

来源于php中文网

原创

WooCommerce+WCFM:在供应商店铺页面按商品分类展示产品

本文介绍如何通过自定义短代码,在 wcfm marketplace 的供应商店铺页面中,按 woocommerce 商品分类(如“蔬菜”“水果”)分组展示该供应商上架的所有商品,实现结构清晰、语义明确的分类陈列效果。

本文介绍如何通过自定义短代码,在 wcfm marketplace 的供应商店铺页面中,按 woocommerce 商品分类(如“蔬菜”“水果”)分组展示该供应商上架的所有商品,实现结构清晰、语义明确的分类陈列效果。

在 WooCommerce 搭配 WCFM Marketplace 插件构建的多供应商市场中,原生的供应商店铺页面(如 /store/vendor-name/)默认以时间或销量排序平铺所有商品,缺乏按分类组织的展示能力。而实际业务中,买家常需快速定位某类商品(例如“有机蔬菜”或“进口水果”),因此实现「按供应商自有分类分区块展示」是提升用户体验与转化率的关键优化点。

以下方案通过一个可复用的 WordPress 短代码 wcfm_store_related_products 实现该功能。它能自动识别当前页面上下文(店铺页、商品详情页等),精准获取供应商 ID,并动态遍历该供应商所售商品所属的所有分类,为每个分类生成对应的产品网格区块。

✅ 核心实现逻辑

  • 自动适配多种上下文:支持在 WCFM 店铺主页、单个商品页、或其他自定义页面调用;
  • 智能提取供应商 ID:优先从 URL slug 解析, fallback 到 post_author 或当前用户角色判断;
  • 分类驱动渲染:虽示例代码中硬编码了 category="t-shirt",但实际应用中需扩展为动态遍历分类——这是本教程的重点增强部分。

?️ 增强版完整代码(推荐使用)

将以下代码添加至子主题的 functions.php 文件中:

名品购物网店系统
名品购物网店系统

适合品牌专卖店专用,从前台的美工设计就开始强调视觉形象,有助于提升商品的档次,打造网店品牌!后台及程序核心比较简洁,着重在线购物,去掉了繁琐的代码及垃圾程式,在结构上更适合一些中高档的时尚品牌商品展示. 率先引入语言包机制,可在1小时内制作出任何语言版本,程序所有应用文字皆引自LANG目录下的语言包文件,独特的套图更换功能,三级物品分类,购物车帖心设计,在国内率先将购物车与商品显示页面完美结合,完

下载
add_shortcode('wcfm_store_products_by_category', 'wcfm_vendor_products_by_category');
function wcfm_vendor_products_by_category($attr) {
    global $WCFM, $WCFMmp, $wp, $post;

    // 步骤1:智能获取当前供应商ID
    $vendor_id = 0;
    if (wcfm_is_store_page()) {
        $store_slug = get_query_var(get_option('wcfm_store_url', 'store'));
        $vendor_user = get_user_by('slug', $store_slug);
        $vendor_id = $vendor_user ? $vendor_user->ID : 0;
    } elseif (is_product() && $post && $post->post_author) {
        $vendor_id = $post->post_author;
    } elseif (is_single() && $post && wcfm_is_vendor($post->post_author)) {
        $vendor_id = $post->post_author;
    }

    if (!$vendor_id) return '<p class="notice notice-warning">无法识别供应商,请检查页面上下文。</p>';

    // 步骤2:获取该供应商发布的所有商品分类(仅含有该供应商商品的分类)
    $vendor_terms = get_terms([
        'taxonomy'   => 'product_cat',
        'hide_empty' => true,
        'meta_query' => [
            [
                'key'     => '_wcfm_product_vendors',
                'value'   => '"' . $vendor_id . '"',
                'compare' => 'LIKE'
            ]
        ]
    ]);

    if (is_wp_error($vendor_terms) || empty($vendor_terms)) {
        return '<p class="notice notice-info">该供应商暂未发布任何分类商品。</p>';
    }

    // 步骤3:为每个分类生成产品区块
    $output = '';
    foreach ($vendor_terms as $term) {
        $output .= '<section class="wcfm-store-category-section" id="cat-' . $term->term_id . '">';
        $output .= '<h3 class="store-category-title">' . esc_html($term->name) . '</h3>';
        $output .= do_shortcode('[products category="' . $term->slug . '" store="' . $vendor_id . '" columns="4" limit="8"]');
        $output .= '</section>';
    }

    return $output;
}

✅ 使用方式

在店铺页面任意位置(如通过古腾堡「自定义HTML」区块、经典编辑器或页面模板)插入:

[wcfm_store_products_by_category]

? 提示:[products] 短代码由 WooCommerce 原生提供,支持 columns、limit、orderby 等参数,可灵活调整每行商品数与加载数量。

⚠️ 注意事项与最佳实践

  • 必须启用 WCFM Marketplace 的“商品归属元数据”:确保插件已正确为每个商品写入 _wcfm_product_vendors 元字段(默认开启);
  • 分类可见性控制:仅当某分类下存在该供应商的商品时,才会被列出,避免空分类干扰;
  • 性能优化建议:若供应商商品量极大(>500),建议配合对象缓存(如 Redis)或使用 WP_Query 替代 do_shortcode() 以减少嵌套开销;
  • 样式定制:可通过 CSS 类 .wcfm-store-category-section 和 .store-category-title 自定义标题样式与区块间距;
  • 兼容性:适用于 WCFM Marketplace ≥ 3.5.0 + WooCommerce ≥ 6.0,PHP 7.4+。

通过以上实现,您即可在供应商店铺页呈现专业级的分类导购结构,既符合买家浏览习惯,也强化了供应商的品牌货架形象。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

996

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

661

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

496

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

406

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

404

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

466

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

418

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

444

2024.04.07

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

660

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号