You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Divi主题构建器中为Book Review自定义类型指定关联WooCommerce产品?

在Divi中通过ACF文章对象字段关联WooCommerce产品的实现方法

Divi默认的WooCommerce模块没有直接读取ACF自定义字段的选项,必须借助自定义短代码或钩子来实现,下面是两种可行的实用方案:

方案一:自定义短代码直接输出关联产品

这种方法最直接,通过短代码获取当前Book Review文章的关联产品,再渲染产品内容:

  1. 在主题的functions.php或自定义插件中添加以下代码:
function book_review_related_product_shortcode() {
    // 获取当前文章的ACF关联产品字段(替换成你的实际字段名)
    $related_product = get_field('book_post_object_product');
    if (!$related_product || !is_a($related_product, 'WP_Post')) {
        return '暂无关联图书';
    }

    // 调用Divi的Woo产品短代码渲染单个产品
    ob_start();
    echo do_shortcode('[et_pb_woo_products type="id" ids="' . $related_product->ID . '" posts_per_page="1"]');
    return ob_get_clean();
}
add_shortcode('book_related_product', 'book_review_related_product_shortcode');
  1. 在Book Review的Divi主题构建器模板中,添加代码模块,输入短代码[book_related_product]即可展示关联产品。

方案二:用钩子修改Divi Woo模块的查询参数

如果想直接用Divi自带的Woo模块,可通过过滤器修改模块的查询条件,让它自动读取当前文章的关联产品:

  1. 在主题functions.php中添加以下代码:
function modify_divi_woo_module_for_book_review($query_args, $module) {
    // 仅在Book Review自定义文章类型页面生效,且针对Woo产品模块
    if (is_singular('book_review') && $module->slug === 'et_pb_woo_products') {
        $related_product = get_field('book_post_object_product');
        if ($related_product && is_a($related_product, 'WP_Post')) {
            // 将查询参数改为关联产品的ID
            $query_args['post__in'] = array($related_product->ID);
            $query_args['posts_per_page'] = 1;
        }
    }
    return $query_args;
}
add_filter('et_pb_woo_products_query_args', 'modify_divi_woo_module_for_book_review', 10, 2);
  1. 在Book Review的模板中添加普通的Divi Woo产品模块,无需额外设置,模块会自动加载当前文章的关联产品。

注意事项

  • 确保ACF字段名称book_post_object_product和你实际创建的字段别名一致,避免拼写错误。
  • 建议将代码放在子主题的functions.php中,防止主题更新导致代码丢失。
  • 测试前清空站点缓存,确保代码生效。

内容的提问来源于stack exchange,提问作者TheBreaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:54:59