无头WordPress场景下WPGraphQL返回Divi短代码未渲染问题
问题根因
WPGraphQL的内容渲染流程默认没有触发Divi专属的短代码渲染逻辑,你之前针对REST接口配置的短代码渲染规则不会自动作用于GraphQL接口,按照以下步骤配置即可解决:
操作步骤
1. 新增GraphQL专属渲染钩子
将以下代码添加到Divi子主题的functions.php文件中:
add_filter('graphql_post_object_content', function ($content, $post, $args, $context, $info) { // 优先调用Divi官方提供的布局渲染方法 if (function_exists('et_builder_render_layout')) { return et_builder_render_layout($post->post_content); } // 兜底触发WordPress通用内容渲染钩子 return apply_filters('the_content', $post->post_content); }, 10, 5);
2. 补充依赖加载配置(可选,针对动态模块渲染异常场景)
如果配置上述代码后,全局模块、联系表单这类动态Divi模块还是无法正常渲染,再追加以下代码到functions.php:
add_action('graphql_init', function () { // 提前加载Divi构建器前端渲染所需的依赖资源 if (function_exists('et_builder_init_global_settings')) { et_builder_init_global_settings(); et_builder_add_main_elements(); } });
3. 验证生效
- 确认Divi「主题选项」→「构建器」→「高级」分类下的「在REST API中启用短代码渲染」开关保持开启
- 清空WPGraphQL缓存、WordPress全站缓存后,重新执行你现有的GraphQL查询即可拿到和REST接口一致的渲染后HTML内容。
内容的提问来源于stack exchange,提问作者user2978728
相关产品推荐
相关产品推荐

