Адаптивные изображения+ для WordPress: интеграция с WordPress

Введение

Решил создать тему для скрипта, создающего адаптивные изображения. Я обновил эту тему, так что я могу сослаться. Требовать более сфокусированного на конкретном ответе @ChrisFerdinandi посоветовал мне использовать скрипт Adaptive Images+. Этот скрипт сделает именно то, что я ищу.

Поэтому я искал скрипт, который проверял бы меня при посещении веб-сайта на экране Retina, таком как iPad или iPhone для WordPress.

Проблема

Я буду объяснять на каждом шагу, что я сделал, и делиться своим кодом. Прежде чем я поделюсь своим кодом и пройдусь по всем шагам, я опубликую некоторую информацию о моей установке WordPress.

Я установил свою установку WordPress в подпапку с именем /wordpress. Я использую пользовательскую тему WP, которую разработал самостоятельно. Я использую избранные изображения для элементов своего портфолио. Я создаю их в своем файле function.php, например add_image_size('thumbnail-portfolio', 300, 200, true);

Согласно странице установки плагина от Криса Фердинанди, мы начинаем с изменения файла .htaccess на шаге 1. Итак, я пропустил все, что находится между комментариями #START Adaptive-Images и #END Adaptive-Images сразу после RewriteEngine On.

Итак, весь мой файл хотел бы этого:

#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

#START Adaptive-Images

#Add any directories you wish to omit from the Adaptive-Images process on a new line.
#Omit plugins, wp-includes and wp-admin content.
RewriteCond %{REQUEST_URI} !wp-content/plugins
RewriteCond %{REQUEST_URI} !wp-includes
RewriteCond %{REQUEST_URI} !wp-admin

#Send any GIF, JPG, or PNG request that IS NOT stored inside one of the above directories
#to adaptive-images.php so we can select appropriately sized versions
RewriteRule .(?:jpe?g|gif|png)$ adaptive-images.php

#END Adaptive-Images

RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

#END WordPress

Хорошо, после изменения файла .htaccess я загрузил его на сервер. Я обновляю его внутри подпапки /wordpress. Отлично, теперь переходим к шагу 2. Этот шаг я пропустил, потому что это был необязательный вариант.

Правильный шаг 3. Я загрузил adaptive-images.php в тот же каталог, что и мой файл .htaccess, для ясности оба файла загружены в подкаталог. /wordpress.

Шаг 4. Я добавляю сценарий cookie сразу после начала <head> до запуска всех остальных сценариев. Весь мой файл выглядит так:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title><?php bloginfo('name'); ?><?php wp_title('|'); ?></title>

<!-- Meta Tags -->
<meta name="viewport" content="initial-scale=1.0, width=device-width" />

<!-- Stylesheets -->
<link href="<?php bloginfo('stylesheet_url'); ?>" rel="stylesheet">
<link href="<?php bloginfo('template_directory'); ?>/css/960.css" rel="stylesheet">
<link href="<?php bloginfo('template_directory'); ?>/css/flexslider.css" rel="stylesheet">
<link href="<?php bloginfo('template_directory'); ?>/css/isotope.css" rel="stylesheet">

<!-- JavaScript -->
<script>
    document.cookie='resolution='+Math.max(screen.width,screen.height)+("devicePixelRatio" in window ? ","+devicePixelRatio : ",1")+'; path=/';
</script>

<script src="<?php bloginfo('template_directory'); ?>/js/jquery-1.8.1.min.js" type="text/javascript"></script>
<script src="<?php bloginfo('template_directory'); ?>/js/custom.js"></script>
<script src="<?php bloginfo('template_directory'); ?>/js/jquery.flexslider.js"></script>
<script src="<?php bloginfo('template_directory'); ?>/js/jquery.isotope.js"></script>
<script src="<?php bloginfo('template_directory'); ?>/js/jquery.isotope.min.js"></script>

<?php
    /* Always have wp_head() just before the closing </head>
     * tag of your theme, or you will break many plugins, which
     * generally use this hook to add elements to <head> such
     * as styles, scripts, and meta tags.
     */
    wp_head();
?>

</head>

Хорошо, это тоже сделано. На шаге 5 я добавил фрагмент кода в свой файл css.

Хорошо, последний шаг. Шаг 6 — это тестирование всего материала, здесь, наверное, проблема сразу ясна. Поскольку у меня есть доступ к сетчатке экрана мобильного устройства, я решил сначала просмотреть свой сайт на этом устройстве. К сожалению, показаны только фотографии с малым разрешением, так что изображение не имеет четкого фокуса. Затем я посмотрел, как шаг 6 указывает, что если действительно есть новые изображения, то они создаются и сохраняются/сохраняются. Есть папка ai-cache, созданная скриптом adaptive-images.php, но она, к сожалению, пуста.

Следует отметить, что я установил размер рекомендуемого изображения на нормальный размер, а не на версию для сетчатки. Так что 300x200 для просмотра по умолчанию, для сетчатки будет размер 600x400px

Что я сделал?

Я проверил страницу отладки скрипта. Я заметил, что файл cookie будет установлен как resolution. Когда я заменю строку RewriteRule .(?:jpe?g|gif|png)$ adaptive-images.php в .htaccess на RewriteRule .(?:jpe?g|gif|png)$ test.png, все изображения будут переопределены этим.

Ошибка будет выдана после удаления комментария перед вызовом ошибки. Каждый путь связан правильно.

Я пытался изменить права доступа к папке ai-cache с 755 на 777 безрезультатно.


person Caspert    schedule 23.06.2013    source источник


Ответы (2)


Я добился большого успеха с адаптивными изображениями, но это связано с небольшой ручной работой. http://cferdinandi.github.io/adaptive-images/

person Chris Ferdinandi    schedule 25.06.2013
comment
Спасибо, Крис, за ваш комментарий. Так это может работать с WordPress? - person Caspert; 25.06.2013
comment
Определенно. Я сам использую его для сайта фотографа на WP. - person Chris Ferdinandi; 25.06.2013
comment
Однако следует помнить одну вещь: максимальное изображение, которое может быть, — это размер оригинала, поэтому его должно быть достаточно для дисплеев Retina. Вы также должны стремиться к примерно 70 качеству / ценности для jpg, чтобы уменьшить размер и время загрузки. - person Chris Ferdinandi; 25.06.2013
comment
Рад слышать, что он совместим с WordPress. Я долго искал подходящее решение, пробовал различные плагины, включая WP 2x Retina, но он не работает для всех размеров. Я также занят созданием веб-сайта с фотографиями/графическим дизайном, поэтому мне очень важно, чтобы все работало нормально. Итак, когда это работает с WordPress, мне нужно всего лишь загрузить версию изображения для сетчатки? Могу я спросить вас, если вы можете показать мне код, как вы интегрировали код с WordPress? Там я был бы очень счастлив с ним.. :) - person Caspert; 25.06.2013
comment
@Caspert — подробные инструкции по установке можно найти здесь: cferdinandi.github.io/adaptive-images /installation.html. Нажмите на расширенные параметры, чтобы увидеть некоторые детали, относящиеся к WP. И да, просто загрузите 2-кратные изображения, а Adaptive Images позаботится обо всем остальном, уменьшая масштаб по мере необходимости. - person Chris Ferdinandi; 25.06.2013
comment
Я должен отметить: это не плагин. Это требует, чтобы вы вручную добавили его на свой сайт и сделали несколько небольших изменений в файле .hataccess. - person Chris Ferdinandi; 25.06.2013
comment
Это нормально, ха-ха, я попробую. Должен ли я изменить htaccess WordPress или с моего собственного сайта? - person Caspert; 25.06.2013
comment
Я много пытался заставить его работать, но безуспешно. Я следил за учебником на вашем сайте, но я не могу понять, почему он не работает для меня. Некоторые детали: я установил WordPress в подкаталог, например /wordpress. Когда я проверяю исходный код, я не могу найти файл .htaccess. Я меняю постоянные ссылки на более удобные для пользователя, тогда .htaccess будет видно. Вставьте свой код в нужное место, загрузите файл adaptive-images.php в корень подкаталога /wordpress и скопируйте/вставьте скрипт cookie в header.php перед закрывающим тегом заголовка </head>. › - person Caspert; 26.06.2013
comment
› Я использую избранные изображения для элементов своего портфолио. Я создаю их в моем файле function.php, таком как add_image_size('thumbnail-portfolio', 600, 400, true);. Я не знаю, должен ли я установить размер миниатюр для версии для сетчатки, как в моем примере выше, или для нормального размера, который должен быть 300x200 пикселей. Надеюсь, вы поможете мне заставить его работать! - person Caspert; 26.06.2013
comment
Я сделал всю отладку на данный момент. Тестовое изображение будет переопределять все изображения. Ошибка будет выдана после установки этого фрагмента в файле adaptive-images.php. Каждый путь связан правильно. Не знает, что я делаю не так. См. мои предыдущие комментарии для более подробной информации о моей установке WP. Для лучшего понимания, этот скрипт также будет работать, когда я загружаю файлы с помощью медиа-загрузчика WordPress? Верно? @КрисФердинанди - person Caspert; 26.06.2013
comment
Извините, что еще не вернулся к вам. Завтра отвечу подробнее. - person Chris Ferdinandi; 27.06.2013
comment
Итак... для того, что вы пытаетесь сделать: 1. Измените WordPress .htaccess и добавьте материал Adaptive Images сразу после RewriteEngine On, выше элементов, специфичных для WP. Если вы не видите файл, это может быть настройка сервера или FTP. WP всегда генерирует файл .htaccess даже без красивых постоянных ссылок. - person Chris Ferdinandi; 27.06.2013
comment
Судя по вашей отладке, файл .htaccess работает. Это хорошо. Также звучит так, будто все каталоги указывают правильное место. Это тоже хорошо. Учитывая размеры изображений, с которыми вы работаете, есть большая вероятность, что существующие изображения имеют правильный размер, поэтому ИИ ничего не меняет. Вы можете попробовать использовать ДЕЙСТВИТЕЛЬНО маленькое значение файла cookie (скажем, 100) только для принудительного кэширования. - person Chris Ferdinandi; 27.06.2013
comment
Когда вы говорите, что это не работает, вы имеете в виду, что папка AI Cache не создается, или изображения, которые вы обслуживаете, не отличаются по размеру, или...? - person Chris Ferdinandi; 27.06.2013
comment
Прежде всего, спасибо за помощь. Вы сказали, что WordPress автоматически генерирует файл .htaccess, но это не для меня. Только когда я меняю постоянные ссылки на удобные для пользователя, файл существует. Хорошо, что я сделал на данный момент. Делаю третий раз отладку исходников, думаю все работает. Несколько фактов. Итак, моя тема WordPress установлена ​​в подпапке типа /wordpress. Я установил файл adaptive-images.php в тот же каталог, что и .htaccess WordPress в подпапке /wordpress. ›› - person Caspert; 27.06.2013
comment
›› Файл cookie resolution будет существовать, работает второй метод test.jpg, все изображения заменяются на test.jpg. Третий метод покажет ошибку со следующими результатами: d.pr/i/h35n Обратите внимание, что я поместил WordPress в подкаталог /wordpress Я не знаю, правильно ли document_root, потому что после пути нет /wordpress. - person Caspert; 27.06.2013
comment
›› Также я заметил, что когда я устанавливаю постоянные ссылки по умолчанию, потому что мой шаблон портфолио не будет работать, когда я изменяю его на удобный для пользователя, все, что находится между комментариями адаптивных изображений, не будет существовать. Отображается только следующее: snippi.com/s/yoberfz - person Caspert; 27.06.2013
comment
Мой ответ на ваш последний вопрос: будет создана папка ai-cache, теперь внутри подпапки wordpress, но иногда она создавалась в корне. Папка пуста. Что касается размера изображения, везде одинаковый размер, нормальное изображение, отображаемое на дисплее без сетчатки, является правильным, но оно также будет отображаться на дисплее сетчатки, а не на версии сетчатки в 2 раза больше, поэтому на дисплее сетчатки изображения не острое. - person Caspert; 27.06.2013
comment
Я не знаю, правильно ли использовать следующий фрагмент для использования изображений Retina в WordPress: add_image_size('thumbnail-portfolio', 300, 200, true); В приведенном выше примере я использую обычный размер для миниатюр, поэтому версия Retina имеет размер 600x400px в 2 раза больше. Правильно ли это, или я должен установить размер эскиза на размер сетчатки, а не на нормальный размер без сетчатки? Много информации, но я надеюсь, что теперь у вас есть вся необходимая информация, чтобы помочь мне, чтобы этот прекрасный скрипт работал в моей собственной теме! Всем большое спасибо! - person Caspert; 27.06.2013
comment
Еще один тест, который я сделал. Когда я разрешаю файлу adaptive-images.php по умолчанию, в корне моего сайта создается папка ai-cache, когда я меняю правило с $document_root = $_SERVER['DOCUMENT_ROOT']; на $document_root = $_SERVER['DOCUMENT_ROOT'].'/wordpress'; папка создается в подпапке /wordpress. Только последним все загруженные изображения с помощью медиа-загрузчика WordPress выдает такую ​​ошибку: d.pr/i /dX9W - person Caspert; 27.06.2013
comment
Я много пробовал, но безрезультатно. Надеюсь, вы можете мне помочь! В своем небольшом руководстве по отладке вы указываете несколько возможных причин, по которым скрипт не работает. Хорошо, я дам вам результаты. Шаг 1: Да, будет установлен файл cookie с именем resolution. Шаг 2: Все изображения будут заменены изображением test.jpg. И на последнем шаге он получит изображение с ошибкой.. Вы заметили, что часто возникают проблемы с установкой WordPress на последнем шаге. Я думаю, что это ошибка ... Будет создано только ai-cache вне подпапки wordpress, где установлен WP. - person Caspert; 29.06.2013
comment
Пожалуйста, проверьте мой обновленный Вопрос. Надеюсь, у вас есть что-то для данной информации, и вы можете помочь мне в дальнейшем, чтобы мы заставили скрипт работать. - person Caspert; 30.06.2013
comment
Извините за задержку. Я переезжал в эти выходные. Это на самом деле очень сужает его. Вместо того, чтобы принудительно отображать папку кеша в подпапке WordPress, просто настройте правильную переменную, чтобы она отражала путь. Мне пришлось сделать то же самое на моей установке. - person Chris Ferdinandi; 01.07.2013
comment
Итак, что я могу сделать лучше всего? И для ясности, этот скрипт также работает для изображений, которые загружаются в медиатеку WordPress, верно? И должен ли я установить размер миниатюр в functions.php на версию для сетчатки или на нормальный размер? Теперь я установил нормальный размер: add_image_size('thumbnail-portfolio', 300, 200, true); - person Caspert; 01.07.2013
comment
Привет, Касперт. Я не уверен, что понял ваш первый вопрос (Что я могу сделать лучше всего?). Что касается качества изображения, вы можете перейти на сетчатку и позволить приложению уменьшить их масштаб по мере необходимости. НО, вам нужно убедиться, что ширина контейнера соответствует размеру контейнера эскизов, иначе он вообще не будет касаться этих изображений. И да, ЛЮБОЙ файл изображения сначала проходит через Adaptive Images. - person Chris Ferdinandi; 01.07.2013
comment
Я имею в виду с моим первым вопросом (Что я могу сделать лучше всего?) с тем, что это не сработает для меня. Вы заметили, что я проверил, просто настроил правильную переменную, чтобы отразить путь. Как я могу это сделать? - person Caspert; 01.07.2013
comment
Вы сказали, что изображение ошибки отладки дает вам путь к папке с изображением? Я бы просто удостоверился, что именно на это указывают переменные в файле. Этот инструмент определенно требует практических знаний PHP, поэтому он может быть не лучшим решением для вас. - person Chris Ferdinandi; 01.07.2013
comment
Да, ошибка даст мне путь к папке с изображениями моей пользовательской темы, я не знаю, должен ли быть путь к папке uploads WordPress, где WP сохраняет изображения, загруженные с помощью загрузчика мультимедиа, вместо папки с моими изображениями темы. Выдана ошибка: d.pr/i/h35n - person Caspert; 01.07.2013
comment
В папке загрузок не обязательно должна быть папка с делами. Способ работы адаптивных изображений заключается в перенаправлении любого запроса на изображение на вашем сайте, независимо от исходной папки, через Adaptive-images.php. Это новая копия изображения, масштабированная до соответствующего размера, в указанную папку дела. Если вы закомментируете код отладки, что именно у вас не работает? - person Chris Ferdinandi; 01.07.2013
comment
Все работает, также карта ai-cache будет сгенерирована с помощью adaptive-images.php. Только когда я загружаю изображения с помощью загрузчика мультимедиа, теперь в ai-cache будут генерироваться новые изображения. Также, когда я проверяю веб-сайт на устройстве сетчатки.. - person Caspert; 01.07.2013
comment
Рад, что все работает. Да, новые изображения должны создаваться в папке ai-cache. Если ваша проблема решена, не могли бы вы отметить этот ответ как правильный? - person Chris Ferdinandi; 02.07.2013
comment
Да конечно, но моя проблема пока не решена. То есть карта сгенерируется, но не с новыми изображениями... Я не знаю, что мне теперь делать? - person Caspert; 02.07.2013
comment
Похоже, изображения, которые вы загружаете, достаточно велики. Вы можете попробовать настроить переменную обтекания изображения, чтобы лучше соответствовать размеру вашего изображения. - person Chris Ferdinandi; 03.07.2013
comment
Изображения, которые я загрузил, имеют размер 600x400 пикселей, а контейнер, в котором хранятся изображения, имеет размер 300x200 пикселей... Так что я думаю, что это правильно? - person Caspert; 03.07.2013

Я нашел самое простое решение — сделать одно изображение — в два раза больше нормы — сжать его и вызвать на дисплеях без сетчатки в два раза меньше.

Смотрите объяснение здесь...

 http://silev.org/test/Retina-resize.html   
person Web Guy    schedule 24.06.2013