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

为Divi主题添加自定义功能:如何通过子主题覆盖父主题对应文件

Divi子主题覆盖父主题文件&自定义功能挂载操作指南(新手友好版)

前置准备

  • 确保你已经正确安装并激活Divi父主题,同时已经创建并激活了Divi子主题(如果还没创建子主题,直接在wp-content/themes目录下新建divi-child文件夹,里面先建两个必备文件:style.css和functions.php即可)
  • 所有修改都只操作子主题内的文件,不要修改父主题任何内容,避免父主题更新后你的修改被覆盖

场景1:直接覆盖父主题的模板文件

如果是普通的PHP模板文件(比如页面模板、文章模板、header.php、footer.php这类),操作非常简单:

  • 先在父主题文件夹里找到你要修改的对应模板文件,把它原封不动复制一份
  • 粘贴到子主题的文件夹里,保持和父主题完全一致的文件路径和文件名
  • 直接修改子主题里的这个文件内容即可,WordPress会优先加载子主题里同路径同名的模板文件,自动覆盖父主题的对应文件

注意:这个方法仅适用于WordPress标准模板文件,Divi自带的构建器核心模块/功能文件不能用这个方法覆盖,需要用钩子挂载的方式修改,就是你提到的et_builder_structure_elements_load钩子的用法。

场景2:用et_builder_structure_elements_load钩子挂载自定义修改(针对Divi构建器功能)

这个是专门修改Divi构建器核心逻辑的方法,操作步骤如下:

步骤1:打开子主题的functions.php文件

注意不要删除子主题functions.php里已有的默认内容,在文件末尾的?>(如果有的话)前面添加下面的代码即可。

步骤2:编写自定义函数+挂载钩子的代码

给你一个可直接套用的代码模板,注释已经写清楚每个部分的作用,你可以根据自己的需求修改自定义函数里的内容:

// 自定义的修改函数,所有你的自定义逻辑都写在这个函数里
function my_custom_divi_modifications() {
    // 这里放你要实现的自定义代码,比如修改Divi默认模块的参数、替换原有模块逻辑等
    // 举个例子:如果你要修改Divi的按钮模块默认样式,可以在这里加对应的逻辑
}
// 把上面的自定义函数挂载到et_builder_structure_elements_load钩子上
add_action( 'et_builder_structure_elements_load', 'my_custom_divi_modifications' );

新手操作注意事项

  • 代码里的函数名my_custom_divi_modifications可以自己改,但是要保证前后一致,不能有空格、特殊字符,也不能和其他已有的函数重名
  • 修改functions.php前建议先备份原文件,如果修改后网站报错,直接用备份文件覆盖回去就能恢复
  • 如果你要替换某个Divi的模块文件,需要先在自定义函数里先移除Divi原有模块的注册,再注册你自己修改后的模块文件,示例逻辑如下:
function my_custom_divi_modifications() {
    // 先移除Divi原有按钮模块的注册
    remove_action( 'et_builder_modules_register', 'et_builder_register_button_module' );
    // 加载你自己修改后的按钮模块文件,这里要换成你自己的文件路径
    require_once get_stylesheet_directory() . '/custom-modules/Button.php';
}
add_action( 'et_builder_structure_elements_load', 'my_custom_divi_modifications' );

这里的get_stylesheet_directory()就是获取子主题目录的路径,你把修改后的模块文件放到子主题对应的文件夹里,写对路径即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:12:02