it-swarm.com.ru

Как переопределить functions.php в дочерней теме?

У меня есть тема, и мне нужно переопределить некоторые ее специфические особенности в файле functions.php. Я знаю, что лучшая практика заключается в том, чтобы делать это в дочерней теме, помещая пользовательский functions.php. Теперь это часть исходного файла:

function mytheme_setup() {
    ...
    add_image_size( 'mytheme-l-thumbs' , 750 , 423 , true);
    add_image_size( 'mytheme-m-thumbs' , 555 , 313 , true);
    add_image_size( 'mytheme-s-thumbs' , 450 , 254 , true);
    add_image_size( 'mytheme-square-thumbs' , 750 , 750 , true);
    add_image_size( 'mytheme-nocrop-thumbs' , 750 , 1500 , false);

}

add_action( 'after_setup_theme', 'mytheme_setup' );

И я хочу переопределить каждый add_image_size, установив для crop значение false в моей дочерней теме. Я попытался скопировать и вставить функцию на дочернюю тему, но я закончил с этой ошибкой:

Невозможно повторно объявить функцию mytheme_setup () (ранее объявленную в /themes/mytheme-child/functions.php:11) в /themes/mytheme/functions.php в строке 88

Как я могу это сделать?

3
ReynierPM

Когда функция подключена, это легко изменить в дочерней теме. Что вам нужно сделать, это

  • Удалить оригинальную функцию обратного вызова

  • Скопируйте функцию в свою дочернюю тему и переименуйте ее.

  • Делайте ваши настройки по мере необходимости

  • Перезапустить функцию обратного вызова

Вы можете попробовать следующее:

// Remove the callback function from the hook
remove_action( 'after_setup_theme', 'mytheme_setup' );

// Copy the function, rename and do what you need
function my_new_callback()
{
    // Modify what you need
}

// Rehook your custom callback
add_action( 'after_setup_theme', 'my_new_callback' );
3
Pieter Goosen