@Gopr

Как отключить файл в родительской теме и избежать ошибки Fatal error: Cannot redeclare?

Родительская тема файл functions.php
scb_register_table( 'app_geodata', 'cp_ad_geocodes' );
$load_files = array(
'actions.php',
);
appthemes_load_files( dirname( __FILE__ ) . '/includes/', $load_files );


Дочерняя тема файл functions.php
function wp_cp_remove() {

scb_register_table( 'app_geodata', 'cp_ad_geocodes' );
$load_files = array(
'actions.php',
);
appthemes_load_files( dirname( __FILE__ ) . '/includes/', $load_files );

}
add_action( 'widgets_init', 'wp_cp_remove' );


Получаю ошибку:
Fatal error: Cannot redeclare cp_add_listing_item_title_tag() (previously declared in \Родительская тема\includes\actions.php:101) in \Дочерняя тема\includes\actions.php

Если в родительском functions.php закомментировать 'actions.php', то все работает, нужный файл подключается из дочерней темы, но тогда теряется смысл проделанного... Помогите отключить 'actions.php', в родительской теме через дочернюю.
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
Чтобы избегать таких вот ситуаций, в родительской теме, при объявлении любой функции или класса необходимо проверять её наличие

if ( !function_exists ('function_name') ) {
    function function_name () { /* ... */ }
}

if ( !class_exists ('class_name') ) {
    class class_name { /* ... */ }
}


И при подключении любого файла, нужно использовать специализированные функции чтобы учитывать или умышленно игнорировать наличие дочерней темы.
Если родительская тема сделана правильно, то вам достаточно в дочерней объявить нужную функцию, или файл и она как пазл будет встраиваться в родительскую тему.

Но, если в родительской, этого нет. То вы ничего не сделаете, не внося правки в неё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы