Поскольку мобильные устройства из предметов роскоши становятся предметами необходимости, очевидным становится ключевой момент: ваша WordPress тема с фиксированной шириной должна стать гибкой. Пришло время серьезно подумать над вопросом преобразования вашей WordPress темы в дружественную к мобильным устройствам. Это руководство покажет вам базовые шаги к тому, чтобы сделать ваш сайт гибким.
Шаг 1. Резервная копия
Первое, что нужно сделать перед тем, как делать любые серьезные изменения в коде – резервная копия ваших файлов. В этом случае вам нужно просто скопировать по FTP папку вашей темы, или, если у вас есть SSH-доступ к вашему веб-серверу, просто выполнить cp -R twentyten ./twentyten~ в папке WordPress /wp-content/themes
Шаг 2. Разбор вашей WordPress темы
Иногда лучший способ понять, как какие-то вещи работают – разделить их (визуально). Давайте условно разберем сайт, выделяя базовые составные части страницы WordPress по умолчанию (тема Twenty Ten).
Посмотрите диаграмму структуры WordPress-страницы:

Шаг 3. Гибкость контейнерных элементов с помощью CSS и медиа-запросов
Подготовьтесь к мобильным экранам, используя медиа-запросы и заменяя CSS-правила новыми процентными значениями свойств. Если вы посмотрите в style.css вашей темы, вы увидите, что вам нужно заменить фиксированную ширину базовых разделов (контейнеры DIV, то есть #header, #main, #container, #primary, #secondary, #sidebar и #footer) на значения в процентах. Например, в теме Twenty Ten вам нужно добавить в конце вашей таблицы стилей следующее:
@media screen and max-width 1024px {
#wrapper
{
WIDTH:94%;
MARGIN:20px auto;
}
#access,#access .menu-header,div.menu,#colophon,#branding,#main,#footer
{
WIDTH:100%;
MARGIN:0 auto;
}
#branding
{
OVERFLOW:hidden;
}
#container
{
FLOAT:left;
WIDTH:99%;
MARGIN:0 -25.5319149% 0 0;
}
#content
{
WIDTH:68.5957447%;
MARGIN:0 29.787234% 0 20px;
}
#primary,#secondary
{
OVERFLOW:hidden;
WIDTH:23.40425535%;
}
#site-title,#site-info
{
WIDTH:74.4680851%;
}
#footer-widget-area .widget-area,#site-generator,#site-description
{
WIDTH:23.40425535%;
}
}
@media screen and max-width 660px {
#wrapper
{
WIDTH:90%;
MARGIN:5px auto;
PADDING:0 3%;
}
#access,#access .menu-header,div.menu,#colophon,#branding,#main,#footer
{
WIDTH:100%;
MARGIN:0 auto;
}
#branding
{
OVERFLOW:hidden;
}
#site-title
{
WIDTH:100%;
}
#container
{
FLOAT:left;
WIDTH:100%;
OVERFLOW:auto;
}
#content
{
WIDTH:99%;
MARGIN:0;
}
#primary,#secondary
{
FLOAT:left;
OVERFLOW:hidden;
WIDTH:99%;
}
#secondary
{
CLEAR:left;
}
#site-generator,#site-description,#site-info,#site-title
{
CLEAR:left;
FLOAT:left;
WIDTH:95%;
MARGIN:0;
PADDING:0;
}
}
CSS3 медиа-запросы
Более старые версии Internet Explorer не распознают новые элементы разметки HTML5 и/или медиа-запросы. Необходимо ссылаться на два JavaScript файла, которые исправляют недостатки IE8 (и более старых версий). Разместите эти ссылки в head-части кода вашей страницы.
<!--[if lt IE 9]> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22http%3A%2F%2Fhtml5shim.googlecode.com%2Fsvn%2Ftrunk%2Fhtml5.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" /> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22http%3A%2F%2Fcss3-mediaqueries-js.googlecode.com%2Fsvn%2Ftrunk%2Fcss3-mediaqueries.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" /> <![endif]-->
Шаг 4. Сделайте изображения гибкими
По методу Fluid одно и то же большое изображение используется для всех размеров экрана, что неблагоприятно влияет на время загрузки. Например, представьте, что вам нужно загрузить на мобильный телефон изображение в 1000 px, которое затем будет масштабировано до 100 px. Это трата времени и трафика, а также нагрузка на ресурсы мобильного устройства.
Лучшим решением будет Progressive Enhancement. В этом случае мы загрузим уменьшенные версии изображений для экранов меньших размеров. С помощью JavaScript, определяется ближайший подходящий размер, картинка загружается и делается гибкой с помощью CSS.
WordPress автоматически добавляет атрибуты ширины и высоты для всех изображений, которые динамически предоставляются коду страницы. Так что для того, чтобы получить гибкость, нам нужно удалить эти атрибуты. Во-первых, мы создадим JavaScript файл под названием responsive-images.js в папке темы, в котором будет следующее:
jQuery(document).ready( function ($) {
$('img').each( function () {
$(this).removeAttr( 'width' );
$(this).removeAttr( 'height' );
});
});
Затем вставьте также следующий код в файл functions.php темы:
add_action( 'wp_enqueue_scripts' 'tutsresponsive_enqueue' );
function tutsresponsive_enqueue() {
wp_enqueue_script( 'responsive-images', get_theme_directory_uri() . '/responsive-images.js', array( 'jquery' ) );
}
Также добавьте в файл styles.css такое CSS правило:
img {
max-width: 100%;
height: auto;
width: auto9; /* ie8 */
}
Простой путь, но почему бы и нет…
Есть несколько WordPress-плагинов, которые помогают сделать изображения гибкими. Использование плагинов может сэкономить время. Если вы не готовы зарываться в код, найдите просто хороший плагин. Чтобы сделать картинки гибкими, можно использовать WP Fluid Images в директории плагинов WordPress.
Шаг 5. Еще немного интересного кода
Есть еще несколько вопросов относительно iPhone, которые нужно рассмотреть. Два вопроса, которые, несомненно, возникнут, это изменение размера текста и масштаб. Вот две дополнительные строки кода: первую нужно добавить в ваш файл styles.css, а вторую нужно добавить в части <head> вашей страницы.
html {
-webkit-text-size-adjust: none;
}
<meta name="viewport" content="width=device-width; initial-scale=1.0">





















Комментарии к записи: 14
Пробовали вы адаптировать WP сайт к мобильным устройствам с помощью Twitter Bootstrap (http://twitter.github.com/bootstrap/)?
Это будет хорошее решение?
Не пробовали, но спасибо за наводку, будет интересно глянуть.
по моему у вас ошибочка в media query
нужно писать так
@media screen and (max-width: 500px) {
}
иначе ие не реагирует на такие штучки)
— проблема в отображении на мобильный устройствах. Рэпитные изображения повторяются только по-ширине экрана смартфона. Не могу разобраться. Может кто подскажет?
Добрый день. А куда именно вставлять код в файле функции? Я ставил в конце и у меня синтаксическая ошибка. подскажите пожалуйста.
https://hostenko.com/wpcafe/tutorials/kuda-vstavlyat-etot-kod-v-wordpress-obshhaya-struktura-faylov-temyi/
Проверьте пожалуйста этот код. Может синтаксис в wordpress изменился. Потому что я все правильно делаю.
ошибочка надо get_template_directory_uri()
по правде говоря ни один из выше приведенных советов не помог в мобильной опере картинок нет почемуто
На самом деле — вставка кода в functions.php темы — выдает синтаксическую ошибку — это может быть конфликтом самой темы и этого кода?
Активно использую тему Jupiter — может в теме есть какие-то настройки, а данным кодом отменяю их и сайт вешается?
Да, такое запросто может быть. Темы Jupiter уже из коробки адаптирована к мобилкам, нет смысла ее в этом плане допиливать.
тема еще живая , вопросы можно задавать?
Привет, скажи плиз какой плагин или сервис юзаешь для отображения соц кнопок под статьей?
Easy Social Share Buttons