wordpress - 如果网站使用 Divi,如何创建模板?
问题描述
我在一个网站上做一些工作,一切都是在 Divi 制作的。
我只想为产品页面等构建一些自定义 woocommerce 模板。但是当我将模板添加到主题文件夹时,它不会覆盖产品页面。
当我查看调试查询时,它显示正在使用 et 页面构建器模板而不是常规产品模板。
他们的文档都是为非编码人员准备的,只有与代码相关的东西是关于制作模块的。
如何从子主题中制作普通模板覆盖?
解决方案
您只需确保模板文件的路径正确。例如,如果您尝试覆盖位于以下位置的单一产品模板:
wp-content/plugins/woocommerce/templates/single-product.php
只需将其复制到:
wp-content/themes/{your-child-theme}/woocommerce/single-product.php
并在那里进行更改。
对于任何模板文件,只需匹配路径减去templates
文件夹即可。
如果您安装了任何缓存插件,您可能需要在更改显示之前清除缓存。
为了测试它,我复制single-product.php
并product-image.php
进行了以下更改。
如果这对您不起作用,请确保您的子主题设置正确。
编辑: Divi 的主题生成器一旦激活,将导致站点不再使用页面模板。所以没有办法(除了重写主题生成器)用你自己的模板文件覆盖它。
但是,您可以自定义 Theme Builder 使用的 Divi 模块,尽管编辑它们有点复杂。
这些模块位于:
wp-content/themes/Divi/includes/builder/module/
例如,我将覆盖 WooCommerce Title 模块。
wp-content/themes/Divi/includes/builder/module/woocommerce/Title.php
首先,将该文件复制到您的子主题中并将其放在一个新文件夹中:
wp-content/themes/Divi-child/custom-modules/Title.php
接下来,添加以下代码您的子主题functions.php
以替换现有模块:
function divi_child_theme_setup() {
if ( class_exists('ET_Builder_Module')) {
get_template_part( 'custom-modules/custom-title' );
$TE_ct = new Custom_ET_Builder_Module_Woocommerce_Title();
remove_shortcode( 'et_pb_wc_title' );
add_shortcode( 'et_pb_wc_title', array($TE_ct, '_shortcode_callback') );
}
}
add_action('wp', 'divi_child_theme_setup', 9999);
随心所欲地调用您的变量 ( $TE_ct
) 和模块 ( )。Custom_ET_Builder_Module_Woocommerce_Title
最后,在您的子主题中编辑模块。确保类名与您在functions.php
.
...
class Custom_ET_Builder_Module_Woocommerce_Title extends ET_Builder_Module {
/**
* Initialize.
*/
public function init() {
echo "<h1>CUSTOMIZED!!</h1>";
$this->name = esc_html__( 'Woo Title', 'et_builder' );
$this->plural = esc_html__( 'Woo Titles', 'et_builder' );
$this->slug = 'et_pb_wc_title';
$this->vb_support = 'on';
...
在这里,我添加了一个简单echo
的方法来显示模块正在被覆盖。
结果:
推荐阅读
- ggpubr - 我添加到 R ggplot 的 P 值和显着性水平放置不正确
- optaplanner - 根据问题输入有条件地运行 Optaplanner 阶段
- angular - 如何使组合框可编辑?
- google-api - Google Search Console API 按月分组 CURL
- python - 在 TensorFlow 2.5 环境中安装 keras_tuner
- reactjs - 当我单击 reactjs 中基于路由的组件内的按钮时,如何更改 antd 布局中的页脚值
- botframework - Search Message Extension 的 Select Item 事件上的自适应卡片
- java - elasticsearch termvectors RESTful 接口返回错误结果
- c - glibc 编译错误:错误:'__EI___errno_location' 指定的限制属性低于其目标'
- pandas - 如何解决:第一个参数必须是 pandas 对象的可迭代对象,您在 Pandas 中传递了一个“DataFrame”类型的对象