Как переопределить не подключаемую функцию родительской темы из файла non function.php?

Я хочу уменьшить количество файлов изображений, которые создает родительская тема. После небольшого исследования я обнаружил, что для этого мне нужно переопределить функцию из php-файла ( not function.php ) родительской темы, но это невозможно, потому что эта функция не подключается (не завернута в if (! Function_exists ( )) условие). На данный момент я просто завернул родительскую функцию в условие if (! Function_exists ()) и переопределил ее в файле child.php дочерней темы.

В описанной ситуации можно переопределить родительскую функцию, не меняющую родительскую тему? Я спрашиваю здесь, потому что у меня нет реакции со стороны разработчика.

Я попытался удалить родительскую функцию темы со следующим кодом в моей дочерней теме и в плагине, но это не помогло:

function remove_fastnews_actions() { remove_action('after_setup_theme','kopa_front_after_setup_theme'); } add_action('after_setup_theme','remove_fastnews_actions'); //add_action('wp_loaded','remove_fastnews_actions'); 

Это функция, которую мне нужно переопределить (она больше, поэтому я сохранил только то, что мне действительно нужно изменить):

 add_action('after_setup_theme', 'kopa_front_after_setup_theme'); function kopa_front_after_setup_theme() { $sizes = array( 'flexslider-image-size' => array(500, 500, TRUE, __('Flexslider Post Image (Kopatheme)', kopa_get_domain())), 'article-list-image-size' => array(300, 277, TRUE, __('Article List Post Image (Kopatheme)', kopa_get_domain())), 'article-list-sm-image-size' => array(120, 120, TRUE, __('Article List Small Post Image (Kopatheme)', kopa_get_domain())), 'article-carousel-image-size' => array(354, 354, TRUE, __('Article Carousel Post Image (Kopatheme)', kopa_get_domain())), 'entry-list-image-size' => array(227, 182, TRUE, __('Entry List Thumbnail Image (Kopatheme)', kopa_get_domain())), 'blog-image-size' => array(680, 419, TRUE, __('Blog Image Size (Kopatheme)', kopa_get_domain())), ); apply_filters('kopa_get_image_sizes', $sizes); foreach ($sizes as $slug => $details) { add_image_size($slug, $details[0], $details[1], $details[2]); } } 

Одна и та же родительская функция сделана подключаемой:

 if( !function_exists('kopa_front_after_setup_theme') ) { add_action('after_setup_theme', 'kopa_front_after_setup_theme'); function kopa_front_after_setup_theme() { $sizes = array( 'flexslider-image-size' => array(500, 500, TRUE, __('Flexslider Post Image (Kopatheme)', kopa_get_domain())), 'article-list-image-size' => array(300, 277, TRUE, __('Article List Post Image (Kopatheme)', kopa_get_domain())), 'article-list-sm-image-size' => array(120, 120, TRUE, __('Article List Small Post Image (Kopatheme)', kopa_get_domain())), 'article-carousel-image-size' => array(354, 354, TRUE, __('Article Carousel Post Image (Kopatheme)', kopa_get_domain())), 'entry-list-image-size' => array(227, 182, TRUE, __('Entry List Thumbnail Image (Kopatheme)', kopa_get_domain())), 'blog-image-size' => array(680, 419, TRUE, __('Blog Image Size (Kopatheme)', kopa_get_domain())), ); apply_filters('kopa_get_image_sizes', $sizes); foreach ($sizes as $slug => $details) { add_image_size($slug, $details[0], $details[1], $details[2]); } } } 

И функция дочерней темы, которая переопределяет родительскую функцию:

 add_action('after_setup_theme', 'kopa_front_after_setup_theme'); function kopa_front_after_setup_theme() { $sizes = array( 'flexslider-image-size' => array(0, 0, TRUE, __('Flexslider Post Image (Kopatheme)', kopa_get_domain())), 'article-list-image-size' => array(0, 0, TRUE, __('Article List Post Image (Kopatheme)', kopa_get_domain())), 'article-list-sm-image-size' => array(120, 120, TRUE, __('Article List Small Post Image (Kopatheme)', kopa_get_domain())), 'article-carousel-image-size' => array(0, 0, TRUE, __('Article Carousel Post Image (Kopatheme)', kopa_get_domain())), 'entry-list-image-size' => array(0, 0, TRUE, __('Entry List Thumbnail Image (Kopatheme)', kopa_get_domain())), 'blog-image-size' => array(0, 0, TRUE, __('Blog Image Size (Kopatheme)', kopa_get_domain())), ); apply_filters('kopa_get_image_sizes', $sizes); foreach ($sizes as $slug => $details) { add_image_size($slug, $details[0], $details[1], $details[2]); } } 

Related of "Как переопределить не подключаемую функцию родительской темы из файла non function.php?"

Поскольку исходная функция имеет фильтр в функции, почему бы не воспользоваться этим? В вашем functions.php , что-то вроде (непроверенный код):

 add_filter('kopa_get_image_sizes', 'override_kopa_images'); function override_kopa_images($sizes) { $new_sizes = array( 'flexslider-image-size' => array(0, 0, TRUE, __('Flexslider Post Image (Kopatheme)', kopa_get_domain())), 'article-list-image-size' => array(0, 0, TRUE, __('Article List Post Image (Kopatheme)', kopa_get_domain())), 'article-list-sm-image-size' => array(120, 120, TRUE, __('Article List Small Post Image (Kopatheme)', kopa_get_domain())), 'article-carousel-image-size' => array(0, 0, TRUE, __('Article Carousel Post Image (Kopatheme)', kopa_get_domain())), 'entry-list-image-size' => array(0, 0, TRUE, __('Entry List Thumbnail Image (Kopatheme)', kopa_get_domain())), 'blog-image-size' => array(0, 0, TRUE, __('Blog Image Size (Kopatheme)', kopa_get_domain())), ); return $new_sizes; } 

В качестве альтернативы вы можете использовать входную переменную $sizes для изменения отдельных записей, например

 add_filter('kopa_get_image_sizes', 'override_kopa_images'); function override_kopa_images($sizes) { $sizes['flexslider-image-size'] = array(0, 0, TRUE, __('Flexslider Post Image (Kopatheme)', kopa_get_domain())); return $sizes; }