add_image_size() для определенных типов записей

26 нояб. 2010 г., 23:28:23
Просмотры: 12.9K
Голосов: 19
set_post_thumbnail_size( 80, 80, true ); // true для всех типов записей

Предположим, у меня есть три типа записей в блоге: Посты, Видео и Товары. Мне может потребоваться размер изображения 80x80 для постов, 100x100 для видео и 50x100 для товаров. Насколько я знаю, я вынужден создавать миниатюры для изображений постов в размерах 100x100 и 50x100. А для товаров я должен создавать миниатюры 80x80 и 100x100, хотя я никогда не буду их использовать.

Существует ли способ создавать размеры изображений на основе типов записей, чтобы не генерировать кучу ненужных изображений и не тратить ресурсы впустую?

4
Комментарии

У меня точно такая же потребность.

MikeSchinkel MikeSchinkel
27 нояб. 2010 г. 00:34:09

Что произойдет, если использовать функцию image_resize в теме в тех местах, где нужен этот размер изображения? Также можно написать сокращенную функцию для многократного использования в зависимости от контекста.

User User
21 июн. 2012 г. 23:07:55

Кажется очевидным упущением, неужели это до сих пор не исправлено?

Nathan Hornby Nathan Hornby
21 февр. 2017 г. 19:18:32

Размеры изображений для типов записей https://wordpress.org/plugins/post-types-image-sizes/

Parsa Parsa
28 дек. 2019 г. 10:40:08
Все ответы на вопрос 3
1
13

Невозможно задавать размеры изображений на основе типа записи, так как изображения еще не прикреплены к записи во время их загрузки и создания промежуточных размеров (когда вы добавляете их через "Новые медиафайлы", они вообще не прикреплены ни к какой записи).

Однако недавно я создал два плагина, которые вместе делают то, что вам нужно. Virtual intermediate images перехватывает создание промежуточных размеров изображений: они не создаются на диске, но все равно существуют в массиве метаданных. Это заставляет WordPress думать, что они существуют, и вы можете использовать их как обычные изображения. Сопутствующий плагин On-Demand Resizer создает отсутствующие размеры изображений по запросу. При первом запросе изображения оно создается, все последующие запросы будут обслуживаться уже созданным изображением.

Этим плагинам нужен рефакторинг перед тем, как я размещу их в каталоге плагинов WordPress, но они должны быть безопасны. Или, по крайней мере, содержат комментарии TODO там, где есть проблемы с безопасностью.

26 нояб. 2010 г. 23:40:35
Комментарии

Отлично!

MikeSchinkel MikeSchinkel
27 нояб. 2010 г. 00:36:11
0

Я опубликовал некоторый код в этой другой ветке, который устанавливает временный параметр (transient) с типом записи при загрузке изображения, а затем проверяет значение этого временного параметра и соответствующим образом настраивает размер миниатюры записи после завершения загрузки. Это не идеально и не защищено от ошибок, но должно продемонстрировать основную концепцию.

30 дек. 2010 г. 01:41:43
0

Я придумал следующее решение. Оно создает изображения только для пользовательского типа записи, не создавая дополнительных. Единственная проблема в том, что если вы используете плагины, такие как Advanced Custom Fields, при попытке отобразить поле галереи показываются только стандартные размеры изображений WordPress: 'thumbnail', 'medium', 'large', и вы не можете получить доступ к созданным пользовательским размерам изображений для записи.

if ( function_exists ('add_image_size') ) {

function remove_default_img($sizes) {
    unset( $sizes['medium']);
    unset( $sizes['large']); 
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_img');

$type = get_post_type($_REQUEST['post_id']);
// Размеры изображений для Custom_Post_Name ===================================
if ( $type === "Custom_Post_Name" || $post_type === "Custom_Post_Name" ) {
add_image_size('custom_size_img', 165, 249, true);
}

}

22 мая 2014 г. 20:16:18