# B2B Trade B2B Trade 是一个面向汽车贴膜门店的 WordPress 经典主题。主题提供服务项目、施工案例、新闻资讯、门店介绍、常见问题和联系方式;联系页只展示门店对外信息、营业时间与地图导航,不包含提交表单、邮件发送处理器或 SMTP 依赖。 ## 运行要求 - WordPress 6.8 或更高版本 - PHP 8.1 或更高版本 - 当前发布版:2.2.0 - 已针对 WordPress 7.0 系列配置回归环境 前端依赖仅包含主题内置的 Bootstrap 5.3.8 CSS 和 bundle JS。字体使用操作系统字体栈,不会向字体、脚本或样式 CDN 发起请求。 首页信任栏、首页咨询区、关于页资料区和联系行动区使用主题内置的汽车施工场景背景图;图片均随主题本地加载,不依赖外部图床。 ## 页面与内容结构 首页固定显示 5 个板块: 1. 首屏定位与双按钮 2. 四项信任指标 3. 服务项目轮播(最多 6 项,桌面每屏 2 项) 4. 案例作品轮播(最多 6 项,桌面每屏 2 项) 5. 联系门店行动区 关于页承载门店介绍、信任指标、环境图片、外部视频链接和服务文档。FAQ 页复用 8 项手风琴内容;联系页按配置展示门店信息和地图卡片。新闻资讯使用 WordPress 原生文章和分类,列表页每页显示 9 篇,支持分类、标签、日期归档、搜索、RSS 和独立详情页。 主题注册: - `service` 服务项目文章类型,归档路径 `/services/` - `case` 案例文章类型,归档路径 `/cases/` - `case_type` 案例分类法 - `fragrance-capability` 图片尺寸(760 × 720,硬裁切) 服务卡片图片的显示优先级为: 1. 自定义横版封面 `_fragrance_service_cover_id` 2. 产品初始化数据中的主题横版封面 3. WordPress 特色图片 4. 旧站点的 `_service_image` URL 5. 主题内置的中性 SVG 占位图 首页和列表优先使用 4:3 横版封面;服务详情页仍使用 `large` 尺寸的特色图片,可完整展示产品参数海报。 ## 首次激活 激活主题后会运行版本化且可重试的初始化: - 创建 7 个默认服务,并使用 `_fragrance_seed_key` 防止重复; - 创建或复用 `home`、`about`、`faq`、`contact` 页面; - 未配置文章页时创建或复用 `news` 页面,并将其设置为 WordPress 文章页; - 已配置文章页时保留现有页面与 URL,不强制覆盖; - 为约定页面补齐模板,但不修改已有正文; - 不会自动发布或恢复用户已有的草稿、私密页或回收站页面; - 将已发布的 `home` 设置为静态首页; - 仅在数据库写入全部成功后推进 `fragrance_trade_schema_version`。 重复激活和重复执行初始化不会增加服务或页面数量。失败信息和未发布页面状态会在后台显示管理员通知。 未分配主导航时,主题输出:首页、服务项目、案例作品、新闻资讯、关于门店、常见问题、联系我们。已分配菜单时,主题不会自动增加新闻入口;如果菜单缺少 WordPress 文章页,后台会提示管理员手动添加。 ## 新闻资讯 - 后台通过 WordPress“文章”发布新闻,不注册额外文章类型; - 新站点的新闻列表默认位于 `/news/`,升级站点保留已有文章页地址; - 列表卡片显示特色图片、分类、日期、标题和摘要,无图片时使用主题内置占位图; - 分类、标签、日期和作者归档复用新闻卡片样式; - 新闻详情包含上一篇、下一篇和联系门店行动区,不显示评论区; - 主题不修改全站固定链接规则,也不会自动创建新闻分类或示例新闻。 ## 服务与案例一键初始化 主题随包提供 5 个 KDX 隐形车衣产品服务、6 篇汽车改色案例和 62 张图片,但不会在主题激活时自动写入。管理员可进入“外观 → 初始化内容”,点击“一键初始化服务与案例”后将内容复制到当前站点的文章与媒体库。 导入器使用稳定的内容和图片标识防止重复;已有同名服务或案例会被保留且不会被覆盖。中途因写入失败留下的草稿可以再次执行导入以继续补齐,已发布内容不会重复生成。 首页的服务与案例区域使用原生响应式轮播,支持箭头、分页圆点、触摸滑动和 9 秒自动播放;鼠标悬停、键盘聚焦或触摸操作时会暂停,系统启用“减少动态效果”时自动播放关闭。 ## 外观配置 “外观 → 自定义 → 门店首页”包含 6 个配置板块: - 首屏定位 - 信任栏 - 门店环境与参观 - 文档支持 - 常见问题 - 联系方式与社交链接 主题已预置康得新合肥新创贴膜中心的对外名称、主营品牌、授权级别、所在城市、门店联系人、电话、地址与营业时间。这些信息仍可在“联系方式与社交链接”板块中逐项修改。页脚 ICP 备案号及备案查询链接也在此配置;备案号留空时前台不会显示。 视频链接不会嵌入页面或打开弹窗;配置后会在新标签页直接打开,并带有 `noopener noreferrer`。 地图与导航按以下顺序工作: 1. “地图导航链接”用于覆盖“打开地图导航”按钮的目标地址; 2. 已配置有效的百度地图经纬度时,内嵌地图固定显示该坐标,并以门店名称和详细地址作为标注内容; 3. 未配置坐标时,使用门店名称检索并将结果限制在所在城市;门店名称为空时回退使用门店地址,检索词也为空时隐藏地图卡片。 Hero 按钮的站内默认路径会通过 `home_url()` 解析,支持 WordPress 子目录安装与多站点路径。 ## 安装 1. 将主题目录复制到 WordPress 的 `wp-content/themes/`。 2. 在“外观 → 主题”中激活 B2B Trade。 3. 在“外观 → 菜单”中创建并分配主导航;未分配时主题会显示默认导航。 4. 在“外观 → 自定义 → 门店首页”中核对并按需更新门店信息。 5. 在服务项目和案例后台上传实际图片与内容,并通过“文章”发布新闻资讯。 发布前应在 WordPress 6.8 或更高版本、PHP 8.1 或更高版本环境中检查首页、服务、案例、新闻列表与详情、新闻归档、关于、FAQ、联系、搜索与 404 页面,并确认桌面和移动端没有资源 404、控制台错误或横向滚动。 详细验收项见 `CODE_REVIEW_STANDARD.md`,清理范围与兼容策略见 `CODE_CLEANUP_PLAN.md`。 ## 数据兼容 - 保留 `fragrance-trade` 文本域和 `fragrance_trade_*` 函数前缀。 - 保留 `store_map_url` 设置键。 - 保留 `_service_image` 只读回退,不自动改写或删除旧元数据。 - 旧的 `fragrance_trade_setup_done` 仅用于识别已有安装;新的流程以 `fragrance_trade_schema_version` 为准。 - schema 4 只在未配置有效文章页时创建 `/news/`,不会覆盖已有 `page_for_posts`。 - 旧的联系页 URL 即使带有额外查询参数也能打开,但主题不再生成、读取、显示或传递服务名称。 ## 许可证 主题按 GNU GPL v2 或更高版本发布。Bootstrap 5.3.8 的 MIT 许可证副本位于 `assets/vendor/bootstrap/LICENSE`。