• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Как правильно расположить файлы woocomerce в дочерней теме?

Image CMS

vasja

Опытный
#1
Есть у меня магазин на wordpress+woocommerce с темой flatastic, внутри которой есть папка с конфигурационным файлов config.php. В дочерней теме создал аналогичный файл и хочу переопределить хук:
PHP:
remove_action('woocommerce_single_product_summary', array(&$this,
'mad_woocommerce_template_single_meta'), 11);
add_action('woocommerce_single_product_summary', array(&$this,
'mad_woocommerce_template_new_single_meta'), 11);
function mad_woocommerce_template_new_single_meta () {
   echo "hello";
}
 
Последнее редактирование:

ADv

Гуру
Местный
#4
searchingman - вот:
wp-content/themes/flatastic/config-woocommerce/config.php
А если это файл темы, его ведь тоже можно переопределить?
Насколько мне помнится, в дочерней теме должна быть сохранена ровно такая же структура файлов, как и в родительской.
Поэтому wp-content/themes/flatastic-child/config-woocommerce/config.php
 

vasja

Опытный
#5
Насколько мне помнится, в дочерней теме должна быть сохранена ровно такая же структура файлов, как и в родительской.
Поэтому wp-content/themes/flatastic-child/config-woocommerce/config.php
если бы! я бы такой вопрос не задавал - не прокатывает..
 

searchingman

Гуру
Местный
#6
searchingman - вот:
wp-content/themes/flatastic/config-woocommerce/config.php
А если это файл темы, его ведь тоже можно переопределить?
Очень многое зависит от того как подключается файл в родительской теме.
Неплохие материалы от разработчиков Wordpress.
- Дочерние темы в WordPress
- Использование функции get_template_part() в WordPress
Из статьи
Стоит так же отметить, что подобным образом изменять можно не все файлы родительской темы. Например, вы не сможете изменить файл, который был вызван PHP функцией include или require.
Смотрим как подключается файл
PHP:
include_once 'config-plugins/config.php';
Отсюда вывод, что прямым копированием в дочернюю темы нельзя переопределить файл.

В самом файле \flatastic\config-woocommerce\config.php много хуков. Поэтому можно их отключать.
Либо определить класс class MAD_WOOCOMMERCE_CONFIG, подключив его в functions.php свой дочерней темы.
В итоге в родительской теме класс не будет определен , т.к. прописан
PHP:
if (!class_exists('MAD_WOOCOMMERCE_CONFIG')) {
 
Последнее редактирование:

ADv

Гуру
Местный
#7
если бы! я бы такой вопрос не задавал - не прокатывает..
Кто же знал, что это файл фреймворка темы.
Копируйте тогда всю папку config-woocommerce, и уже тогда вносите изменения.
Или же, танцуйте с бубном, как предлагает searchingman
 

vasja

Опытный
#8
Очень многое зависит от того как подключается файл в родительской теме.
Неплохие материалы от разработчиков Wordpress.
- Дочерние темы в WordPress
- Использование функции get_template_part() в WordPress
Из статьи

Смотрим как подключается файл
PHP:
include_once 'config-plugins/config.php';
Отсюда вывод, что прямым копированием в дочернюю темы нельзя переопределить файл.

В самом файле \flatastic\config-woocommerce\config.php много хуков. Поэтому можно их отключать.
Либо определить класс class MAD_WOOCOMMERCE_CONFIG, подключив его в functions.php свой дочерней темы.
В итоге в родительской теме класс не будет определен , т.к. прописан
PHP:
if (!class_exists('MAD_WOOCOMMERCE_CONFIG')) {
searchingman нашел инструкцию самого разработчика https://velikorodnov.ticksy.com/articles/8174/?print - там все гораздо сложнее
делаю все один в один по инструкции
PHP:
/* Include Config WooCommerce
/ ---------------------------------------------------------------------- */
if (class_exists('WooCommerce')) {
    if ( ! function_exists( 'mad_woo_config' ) ) {
    function mad_woo_config() {
        // Load required classes and functions
        require_once( 'config-woocommerce/config.php' );
        return MAD_WOOCOMMERCE_CONFIG::instance();
    }
}
/**
* Instance main plugin class
*/
    global $mad_woo_config;
    $mad_woo_config = mad_woo_config();
}
но выбивает ошибку 500 (адрес указываю правильный, если обратиться к другому файлу по тому же адресу - все выводит)
Есть у кого-либо соображения по этому поводу?
в логах пишет, что ругается на функцию неопределенную "mad_custom_get_option()"
 
Последнее редактирование:

searchingman

Гуру
Местный
#9
Согласно вышеприведенной инструкции, нужно папку config-woocommerce с содержимым скопировать из родительской темы в дочернюю. И уже после этого внести код в functions.php дочерней темы.
Вы так сделали?
 

vasja

Опытный
#11
Согласно вышеприведенной инструкции, нужно папку config-woocommerce с содержимым скопировать из родительской темы в дочернюю. И уже после этого внести код в functions.php дочерней темы.
Вы так сделали?
searchingman да, все правильно
Простите, может не совсем в тему, а вот эта инфа не поможет?
нет, Stork.71 не поможет
Очень многое зависит от того как подключается файл в родительской теме.
Неплохие материалы от разработчиков Wordpress.
- Дочерние темы в WordPress
- Использование функции get_template_part() в WordPress
Из статьи

Смотрим как подключается файл
PHP:
include_once 'config-plugins/config.php';
Отсюда вывод, что прямым копированием в дочернюю темы нельзя переопределить файл.
Все, разобрался! Данная инструкция предназначалась для более поздней версии темы, для моей она не работала
 
Сверху Снизу