Intereting Posts
Список категорий для автора: list_categories функция внутри функция list_authors Относительный путь вообще не работает в локальной среде WAMP Помощник менеджера заданий менеджера? Избранные сообщения / Избранные сообщения со случайным порядком Добавить кнопку Ajax для рейтинга Домен, отображающий сайт верхнего уровня в wordpress multi Создание эскиза с изображения уже на сервере? Сортировка популярных сообщений по просмотрам за последнюю неделю Пользовательское мета-поле – Youtube embed Как создать выделенную папку для определенной роли через регистрацию Доступ к двум базам данных Могут ли изменения в пользовательской структуре WordPress постоянной ссылки влиять на старые URL-адреса? Мой отзывчивый веб-сайт не поддерживает мобильный Является ли использование ON DELETE CASCADE неправильным или недопустимым в wordpress? используя `require` в моих функциях.php разбивает сайт

Автоматическое сжатие эскизов в зависимости от размера

Это зависит от этого вопроса , потому что сжатие jpg изменяется в зависимости от того, какой результат будет получен в результате изменения размера изображения, полученного с помощью WP. Хотя это может сработать для большинства людей, я ищу более дискретный и автоматический подход. И это меняет wp_create_thumbnail я думаю.

Дело в следующем: как изменить сжатие JPG автогенерированных эскизов для загруженного изображения? Например, изображения ниже 400 пикселей шириной 60% и шириной от 401 до 100 пикселей на 80%.

Я ищу более дискретный и автоматический подход. И это меняет wp_create_thumbnail я думаю.

И здесь вы ошибаетесь. Вот весь код для wp_create_thumbnail() из ядра:

 function wp_create_thumbnail( $file, $max_side, $deprecated = '' ) { if ( !empty( $deprecated ) ) _deprecated_argument( __FUNCTION__, '1.2' ); $thumbpath = image_resize( $file, $max_side, $max_side ); return apply_filters( 'wp_create_thumbnail', $thumbpath ); } 

Эта функция сама по себе мало что делает. Вместо этого, если вам нужно что-то изменить, это будет image_resize() … но изменение основной функции по-прежнему является неправильным способом сделать это.

Почему бы не изменить Core

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

Во многих случаях изменения, которые вы хотите сделать для ядра, применимы только к нескольким людям – как правило, к вам. Если изменения не принесут пользу большинству пользователей WP, любые основные изменения, выходящие за рамки текущего цикла разработки, обычно будут отображаться для более поздних или оставшихся в Trac с разрешением «wontfix».

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

Правильный путь

Правильный способ изменить ситуацию – создать свою собственную версию image_resize() в плагине. Затем создайте собственную my_create_thumbnail() которая соответствует следующим:

 function my_create_thumbnail( $file, $max_side ) { return apply_filters( 'wp_create_thumbnail', my_image_resize( $file, $max_side, $max_side ) ); } 

Эта функция имеет ту же подпись, что и wp_create_thumbnail() и запускает одни и те же фильтры, поэтому ее можно использовать как замену оригинальной функции «один к одному» во всех ваших других сценариях плагина и темы.