如何在WordPress Amelia Booking插件中展示指定服务类别?
Amelia预约插件多产品共用单页面解决方案
核心思路是利用Amelia短代码的动态参数传递特性,只需要创建1个公共预约页面,通过不同产品跳转链接携带的服务ID参数,让页面只渲染指定的单个预约服务,完全不用为每个产品单独建页,也不会展示多余的服务类别。
具体实现步骤
- 第一步:整理所有产品对应的Amelia服务ID
进入Amelia后台的「服务」管理界面,每个服务的编辑页URL或者列表页的条目属性里都可以找到对应的数字ID,提前整理好产品和服务ID的对应映射表。 - 第二步:创建公共预约落地页
你可以根据自己的技术能力选两种实现方式:- 代码实现:在你新建的公共预约页的模板中加入以下逻辑,直接读取URL中的服务ID参数调用对应预约模块
// 读取URL中携带的service_id参数,示例跳转链接为 yoursite.com/common-book?service_id=8 $target_service_id = isset($_GET['service_id']) ? intval($_GET['service_id']) : 0; if ($target_service_id > 0) { // 调用Amelia预约短代码,仅加载指定ID的服务 echo do_shortcode('[ameliabooking service='.$target_service_id.']'); } else { echo '无效的预约产品,请返回重新选择'; }- 无代码实现:安装支持动态URL参数解析的短代码扩展插件,直接在公共预约页的区块编辑器中插入Amelia短代码,将service属性的值设置为URL参数变量即可,无需修改代码。
- 第三步:配置前端产品跳转链接
所有前端展示的产品卡片,跳转链接统一指向你创建的公共预约页,末尾拼接对应服务的ID参数即可。比如ID为8的美容服务,跳转链接设置为你的公共预约页面地址?service_id=8。
可选优化方案
- 如果你希望URL更美观,可以配置WordPress固定链接重写规则,将参数形式的链接转为路径形式,比如
yoursite.com/book/8/,用户体验更好。 - 可以额外加一层参数校验逻辑,判断传入的服务ID是否是已上架的有效服务,避免用户手动修改参数后展示异常内容。
- 如果你需要按员工、按服务分类筛选,也可以用同样的逻辑传递
employee、category参数到Amelia短代码中,适配更多场景。
内容的提问来源于stack exchange,提问作者Adil Feroz
相关产品推荐
相关产品推荐

