Поддержка Проблемы и решения Работа с functions.php в дочерней теме

  • Доброго времени суток!

    Дано: тема Zerif Pro и созданная на его основе дочерняя тема.

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

    Итак, что уже накопал в теме: в родительской теме в файле functions.php как раз имеются строчки отвечающие за разрешения миниатюр, вот они:

    /* Set the image size by cropping the image */
    
    		add_image_size( 'zerif-testimonial', 73, 73, true );
    		add_image_size( 'zerif-clients', 130, 50, true );
    		add_image_size( 'zerif-our-focus', 150, 150, true );
    		add_image_size( 'zerif_our_team_photo', 174, 174, true );
    		add_image_size( 'zerif_project_photo', 285, 214, true );
    		add_image_size( 'post-thumbnail', 250, 250, true );
    		add_image_size( 'post-thumbnail-large', 750, 500, true ); /* blog thumbnail */
    		add_image_size( 'post-thumbnail-large-table', 600, 300, true ); /* blog thumbnail for table */
    		add_image_size( 'post-thumbnail-large-mobile', 400, 200, true ); /* blog thumbnail for mobile */

    Если в них менять значения — все прекрасно работает. Но хочу что бы это описывалось в файле functions.php дочерней темы, но не знаю как это сделать. Просто копировать-вставить не помогает. Может кто знает как это сделать?

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Yuri

    (@yube)

    Попробуйте воспользоваться хуком
    https://codex.wordpress.org/Plugin_API/Action_Reference/after_setup_theme
    и в его обработчике переопределить размеры миниатюр (задать другие размеры) и/или удалить лишние https://codex.wordpress.org/Function_Reference/remove_image_size

    (лично я так еще не делал)

    сначала remove_image_size миниатюр от темы.
    потом регистрация миниатюр (под тем же именем) через add_image_size.

    Спасибо! Все заработало в таком виде:

    add_action('init', 'remove_then_add_image_sizes');
    
    function remove_then_add_image_sizes() {
    	remove_image_size('zerif_project_photo');
    	add_image_size('zerif_project_photo', 600, 600, true);
    }
    if( ! function_exists('theme_function') ){
    	function theme_function() {
    		// Код.
    	}
    }

    Переопределяется функция.
    theme_function
    — название функции в материнской теме.

    Но в вашем случае, всеже код, что вы привели целесообразнее.

    • Ответ изменён 6 лет, 2 месяца назад пользователем fareastt.
    • Ответ изменён 6 лет, 2 месяца назад пользователем fareastt.

    Переопределяется функция.

    вы не правы. она переопределяется только, если ее нет в родительской теме. а если ее нет в родительской теме — то на кой черт тогда нужна эта проверка?

    Модератор Yuri

    (@yube)

    Переопределяется функция.
    theme_function
    — название функции в материнской теме.

    Только если в родительской она объявлена так же, с условием. Иначе fatal error.

    Только если в родительской она объявлена так же, с условием. Иначе fatal error.

    Это предполагается естественно.

    Модератор Yuri

    (@yube)

    Предполагается, но не часто встречается 🙁

    но не часто встречается

    Раньше да. А сейчас.. Мне кажется это уже стандарт.
    За последние пару лет я не припомню, чтобы мне попадались темы из репо, где не было бы проверок (ну там где менял, конечно).

    Но может это потому, что производители попадаются нормальные.

    А сейчас.. Мне кажется это уже стандарт.

    смею с вами не согласиться.
    проверка на существование функции вещь столь же редкая, как лев-альбинос.
    даже в дефолтных темах движка function_exists встречается от силы для 5-6 функций и все.

    прочие же разработчики вообще этими проверками не замарачиваются.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Работа с functions.php в дочерней теме» закрыта для новых ответов.