Как отдавать разные изображения в зависимости от размера экрана в WordPress

29 мая 2013 г., 12:10:11
Просмотры: 21.1K
Голосов: 3

Я создаю адаптивный WordPress сайт, используя подход mobile-first.

Когда мой клиент загружает изображение для записи в блоге, я хотел бы, чтобы WordPress генерировал уменьшенные версии изображения (с меньшим размером файла!), которые будут отдаваться для экранов меньшего размера.

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

Я знаю о функции add_image_size, однако полагаю, что она только изменяет размеры изображения, но не влияет на фактический размер файла. Разные размеры файлов - это самое важное в данном случае.

Так есть ли какой-нибудь плагин или код, который нужно написать, чтобы реализовать это?

Буду рад любой помощи или советам по этому вопросу.

Спасибо

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

У нас много тем по этой теме. Вы искали на нашем сайте?

fuxia fuxia
29 мая 2013 г. 12:21:34

Да, но все найденные мной касаются только изменения размера изображений. Я хочу также уменьшить РАЗМЕР ФАЙЛА, чтобы устройства с маленькими экранами не загружали тяжелые изображения.

Adam Adam
29 мая 2013 г. 12:27:14

Смотрите этот ответ.

fuxia fuxia
29 мая 2013 г. 12:30:55

да, но не указано, как создаются различные вариации изображения. Я не могу вручную заменять каждое изображение, которое загружает пользователь в админке. Что-то вроде этого может сработать http://wordpress.org/plugins/picturefillwp/

Adam Adam
29 мая 2013 г. 12:57:12

Возможно, вам стоит взглянуть на: http://adaptive-images.com/; дополнительная информация по интеграции с WordPress здесь: http://windcompanionwebdesign.com/articles/wordpress-articles/using-adaptive-images-in-a-wordpress-responsive-design/

Nicolai Grossherr Nicolai Grossherr
29 мая 2013 г. 15:08:59

Я знаю, что это старый пост, но так как я нашел его во время поиска ответа на тот же вопрос, я наткнулся на этот плагин, и похоже, что он делает то, что нужно вам/мне. https://en-ca.wordpress.org/plugins/adaptive-images/

KVDD KVDD
27 февр. 2017 г. 22:06:53
Показать остальные 1 комментариев
Все ответы на вопрос 3
2

add_image_size изменяет фактический размер файла изображения.

Что я пробовал:

function odevice_image_sizes() {
    add_image_size( 'iphone-size', 300, 100, true ); // Конечно, размеры указаны неверно...
    add_image_size( 'tablet-size', 600, 300, true );
}


function show_odevice_at_img_select($sizes) {
    $sizes['iphone-size'] = __( 'Размер изображения для iPhone' );
    $sizes['tablet-size'] = __( 'Размер изображения для планшета' );

    return $sizes;
}
add_action( 'init', 'odevice_image_sizes' );
add_filter('image_size_names_choose', 'show_odevice_at_img_select');

При проверке типа устройства (iPhone или планшет), вы можете использовать пользовательские изображения следующим образом

<?php the_post_thumbnail( 'iphone-size' ); ?>

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

29 мая 2013 г. 14:43:27
Комментарии

Спасибо. Думаю, вы правы, я всегда предполагал, что add_image_size работает только с размерами. Получается, эта функциональность уже есть в WordPress.

Adam Adam
29 мая 2013 г. 16:19:28

этот метод всё ещё актуален в 2017 году?

Zach Smith Zach Smith
20 янв. 2017 г. 12:36:52
0

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

После того как вы создали разные размеры изображений с помощью add_image_size, вы можете отдавать их для разных устройств, используя плагин WordPress Mobble (или любую другую систему распознавания устройств на основе PHP) http://wordpress.org/plugins/mobble

Просто сделайте простое условие if else примерно так:

if ( is_mobile() ) : the_post_thumbnail( 'mobile-size' );
elseif( is_tablet() ) : the_post_thumbnail( 'tablet-size' );
else : the_post_thumbnail( 'full' );
endif;
30 мая 2013 г. 14:19:24
3
-1

Самый простой способ - использование CSS

На своем сайте я использую следующий код:

.your_div img {
height:auto;
max-width:100%;
}

Надеюсь, этот CSS-код будет вам полезен.

29 мая 2013 г. 12:18:23
Комментарии

Нет, так как устройства с меньшим экраном всё равно загружают большое изображение. Меня беспокоит вопрос пропускной способности.

Adam Adam
29 мая 2013 г. 12:28:17

Если вы не хотите использовать CSS. Я знаю только одно решение — вам нужно использовать "add_image_size". Надеюсь, вы сможете решить свою проблему.

v123shine v123shine
29 мая 2013 г. 12:42:18

Да, я уже упоминал об этом в своём вопросе. Кажется, вы меня не понимаете.

Adam Adam
29 мая 2013 г. 12:58:27