Вы просто должны убедиться, что ваш путь к файлам шаблонов правильный. Например, если вы пытаетесь перезаписать шаблон single-product , который находится по адресу:
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, используемые Theme Builder, хотя их редактирование немного сложнее.
Модули находятся в:
wp-content/themes/Divi/includes/builder/module/
Например, я переопределю модуль Заголовок WooCommerce.
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
, чтобы показать, что модуль переопределяется.
Результат :