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

Переопределение размеров картинок

paqwerty

Новичок
Всем привет.

С WP и WOO работаю в первый раз. Все установил и делаю свой магазин на основе темы Storefront. Сделал дочернюю тему на ее основе.

Проблема:

При добавлении картинок в библиотеку автоматом генерируются миниатюры woocommerce_thumbnail с размером 324х324, что мне не подходит.Долго искал где это прописано и нашел, что эти параметры заданы в классе самой темы frontstore в файле wp-content/themes/storefront/inc/class-storefront.php:

Код:
            // Declare WooCommerce support.
            add_theme_support( 'woocommerce', apply_filters( 'storefront_woocommerce_args', array(
                'single_image_width'    => 416,
                'thumbnail_image_width' => 324,
                'product_grid'          => array(
                    'default_columns' => 3,
                    'default_rows'    => 4,
                    'min_columns'     => 1,
                    'max_columns'     => 6,
                    'min_rows'        => 1
                )
            ) ) );

Вопрос:

Как мне изменить эти размеры в моей теме?

Что пробовал делать:

В файле functions.php своей темы

1.
Код:
    add_theme_support( 'woocommerce', apply_filters('storefront_woocommerce_args', array(
        'thumbnail_image_width' => 150,
        'single_image_width'    => 300,

        'product_grid'          => array(
            'default_rows'    => 3,
            'min_rows'        => 2,
            'max_rows'        => 8,
            'default_columns' => 4,
            'min_columns'     => 2,
            'max_columns'     => 5,
        ),
    )) );

2.
Код:
add_image_size( 'woocommerce_thumbnail', 150, 300 );

3.
Код:
function copycomp_theme_add_woocommerce_support() {
    add_theme_support( 'woocommerce', apply_filters('storefront_woocommerce_args', array(
        'thumbnail_image_width' => 150,
        'single_image_width'    => 300,

        'product_grid'          => array(
            'default_rows'    => 3,
            'min_rows'        => 2,
            'max_rows'        => 8,
            'default_columns' => 4,
            'min_columns'     => 2,
            'max_columns'     => 5,
        ),
    )) );
}
add_action( 'after_setup_theme', 'copycomp_theme_add_woocommerce_support' );

Ни один из моих вариантов не работает.
 

tuxfighter

Гуру
Местный
скопировать файл /inc/class-storefront.php
в вашу тему и внести в него изменения.
Собственно для этого дочерняя тема и нужна
 

paqwerty

Новичок
скопировать файл /inc/class-storefront.php
в вашу тему и внести в него изменения.
Собственно для этого дочерняя тема и нужна

Сначала просто скопировал, но ничего не поменялось. Потом посмотрел, что в оригинальном файле functions.php главной темы этот файл подключается так:

Код:
$storefront = (object) array(
    'version' => $storefront_version,

    /**
     * Initialize all the things.
     */
    'main'       => require 'inc/class-storefront.php',
    'customizer' => require 'inc/customizer/class-storefront-customizer.php',
);

Я же в своем functions.php на скорую руку подключил его просто прописав в самом начале файла строчку:

Код:
require 'inc/class-storefront.php';

Но меня берут сомнения, что так правильно, хотя работает. Может подскажите как правильно поступить?

P.S.

Везде в туториалах про создание дочерних тем указано, что для этого надо создать свою папку, в ней создать свой файл functions.php для переопределения функций из главной темы и скопировать в свою папку требуемые файлы шаблонов. Но нигде не нашел описание ситуаций как раз с подобными моей, т.е. что делать с такими файлами из, например, папки inc. Может тоже объясните про правильное составление файла functions.php в дочерней теме?
 

tuxfighter

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

paqwerty

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

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

Так если я просто скопирую этот файл в свою тему, то код из него не работает.

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

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

А подскажите плиз что за плагин (первый раз слышу о таком)?
 

paqwerty

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

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


Поставил указанный вами плагин. Но он ничего не изменил, он просто сделал все то же самое, что я сделал руками. Но наверное для быстроты создания он наверное полезен.


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

Подскажите пожалуйста как мне внести изменения в этот файл из дочерней темы?
 

tuxfighter

Гуру
Местный
для быстроты создания он наверное полезен.
он правильно переносит все нужные файлы из родительской темы.
как мне внести изменения в этот файл из дочерней темы?
с помощью правильного текстового редактора с поддержкой юникода конечно же....
а как вы раньше вносили изменения в файлы???
 

paqwerty

Новичок
он правильно переносит все нужные файлы из родительской темы.

Может быть, но нужного файла вообще нет в списке для копирования.

с помощью правильного текстового редактора с поддержкой юникода конечно же....
а как вы раньше вносили изменения в файлы???

)) Я не об этом, я о том, что этот файл я скопировал в свою тему с сохранением структуры папок и после его редактирования ничего не меняется
 
Последнее редактирование:

paqwerty

Новичок
Вот так вот работает:

Код:
function copycomp_theme_add_woocommerce_support() {

    add_theme_support( 'woocommerce', array(
        'thumbnail_image_width' => 150,
        'single_image_width'    => 300,

        'product_grid'          => array(
            'default_rows'    => 3,
            'min_rows'        => 2,
            'max_rows'        => 8,
            'default_columns' => 4,
            'min_columns'     => 2,
            'max_columns'     => 5,
        ),
    ) );
}
add_action( 'after_setup_theme', 'copycomp_theme_add_woocommerce_support', 15 );

Добавил такой код в functions.php дочерней темы. Ранее я уже пробовал такой вариант, но он не работал. Оказалось, что просто надо было добавить приоритет при вешании функции на хук ниже 10 (этот приоритет не указан в оригинальном файле, а значит он равен 10), т.к. файл дочерней темы functions.php выполняется перед файлом главной темы, т.е. я сначала определял свои параметры, а затем главная тема отменяла их))

Скажите, так можно делать?
 

paqwerty

Новичок
регенерировать миниатюры пробовали?

Да.

Изначально проблема в том, что изображения категорий размытые. Начал смотреть что к чему. Обнаружил, что для миниатюр берется сгенерированная версия с размером 324х324. Установил регенератор, регенерировал, но результат тот же. Начал ковыряться дальше и выяснил, что у меня ширина блока 323.81 px, а изображение имеет стиль max-width: 324px, т.е. у меня изображение не влезает в блок и сжимается, из-за чего собственно и происходит размытие. Начал копать где я могу задать эти размеры миниатюр и вот докопался до всего этого.
 
Сверху Снизу