Оптимизация блога — удаление лишнего кода в WordPress
Если вы занимались редактированием собственной WordPress темы, то, наверное, уже видели множество тэгов, выполняющих тривиальные задачи, например: вывод названия блога, кодировки сайта и т.п. Все эти данные можно задать непосредственно в самом шаблоне без вызова специальных функций. Бытует мнение, что за счет сокращения обращений к базе данных вы можете выиграть в производительности блога в целом. Правда, практические испытания некоторых блоггеров, показали, что сокращение времени загрузки ресурса незначительное. Тем не менее, считаю, данную оптимизацию полезной вещью — скорость вполне может ощущаться при слабых каналах связи или высокой посещаемости проекта.
Обновление 18.05.2018: Позже в другом блоге я публиковал пост про оптимизацию WordPress header с куда большим числом актуальных приемов. Также советую посмотреть обзор плагина Clearfy со множеством опций по улучшению работы данной системы.
Тема не один раз затрагивалась в рунете, но подробного описания я так и не заметил. Считаю, для тех, кто только начинает разбираться в WordPress нужно более глубокое рассмотрение данного вопроса. Собственно, поэтому и был создан данный пост. Продвинутые пользователи системы могут лишь проверить наличие ненужных php вставок у себя, пояснения можно не читать.
В заметке будут некоторые пояснения и реальные примеры (с моего блога). Думаю, не все мои читатели знакомы с рассматриваемой темой, поэтому, как говорится, приступим:
<?php language_attributes();?> — отвечает за вывод данных о языке сайта и стране, где он располагается. Строка находится в header.php.
Было: <html xmlns=»http://www.w3.org/1999/xhtml» <?php language_attributes(); ?>>
Стало: <html xmlns=»http://www.w3.org/1999/xhtml» xml:lang=»ru» lang=»ru-UA»>
В данном случае запись lang=»ru-UA» означает, что текст сайта на русском, а сам находится в Украине.
<?php bloginfo(‘html_type’); ?> и <?php bloginfo(‘charset’); ?> — первая часть кода задает значение параметра, заданного с помощью name или http-equiv, вторая определяет кодировку HTML документа. Находятся в header.php. Чтобы понятнее было посмотрим пример:
Было: <meta http-equiv=»Content-Type» content=»<?php bloginfo(‘html_type’); ?>; charset=<?php bloginfo(‘charset’); ?>» />
Стало: <meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″ />
<?php bloginfo(‘name’); ?> — выводит имя блога (в настройках админки поле Blog Title), встречается в шаблоне достаточно часто. Кстати, если вы используете плагин All in One SEO Pack, то он автоматически переписывает заголовки title, поэтому можете убирать из этого тэга весь код.
<?php bloginfo(‘version’); ?> — версия системы, находится в header.php. Можно написать значение вашей версии вручную, указать любое другое, дабы запутать злоумышленника, или вовсе удалить строку.
Было: <meta name=»generator» content=»WordPress <?php bloginfo(‘version’); ?>» />
Стало: <meta name=»generator» content=»WordPress 2.5.1″ />
Кстати, скрытие версии системы является одним из способов защиты блога, хотя ее и можно определить косвенно.
<?php bloginfo(‘stylesheet_url’); ?> — указывает файл стилей, находится в header.php.
Было: <style type=»text/css» media=»screen»>@import url( <?php bloginfo(‘stylesheet_url’); ?> );</style>
Стало: <link rel=»stylesheet» href=»https://tods-blog.com.ua/wp-content/themes/minyx-20-lite/style.css» type=»text/css» media=»screen» />
<?php bloginfo(‘rss2_url’); ?> — задает адрес RSS фида, может находиться в файлах header.php, sidebar.php и footer.php. Если вы используете FeedBurner, то пишите адрес именно от сервиса, а не стандартный.
Было: <link rel=»alternate» type=»application/rss+xml» title=»<?php bloginfo(‘name’); ?> RSS Feed» href=»<?php bloginfo(‘rss2_url’); ?>» />
Стало: <link rel=»alternate» type=»application/rss+xml» title=»Tod’s Blog. Моё видение интернета RSS Feed» href=»http://feeds.feedburner.com/TodsBlog» />
<?php bloginfo(‘pingback_url’); ?> — пусть к XML-RPC файлу, который отвечает за оповещение авторов других блогов, что вы на них ссылались. Находится в header.php.
Было: <link rel=»pingback» href=»<?php bloginfo(‘pingback_url’); ?>» />
Стало: <link rel=»pingback» href=»https://tods-blog.com.ua/xmlrpc.php» />
<?php bloginfo(‘stylesheet_directory’); ?> — говорят, встречается в теме постоянно, хотя у себя не видел. Видимо, отвечает за путь к файлу стилей.
<?php bloginfo(‘description’); ?> — задает описание сайта (в настройках админки поле Tagline), встречается в теме постоянно. Можно просто заменить на нужный вам текст.
<?php bloginfo(‘comments_rss2_url’); ?> — адрес фида (RSS потока) для комментариев, чаще всего встречается в sidebar.php и footer.php.
<!— <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. —> — находится в footer.php, выводит количество запросов и время их выполнения. В принципе, особой необходимости в этом нет, поэтому можно смело удалять.
Код между строчками <?php /* Widgetized sidebar, if you have the plugin installed. */
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar() ) : ?> и <?php endif; ?> в файле sidebar.php используется, когда в вашем блоге отключены виджеты. Если вам это не грозит — закомментируйте его или удалите.
Не исключено, что в темах (шаблонах) вы можете встретить многие другие php вставки с вызовом функций. Некоторые из них, думаю, можно будет спокойно заменить. Но для этого нужно понимать, что и как делает та или иная строка кода, иначе последствия могут быть не очень хорошие. Для подтверждения догадок можете смотреть результат выполнения функций прямо на страницах своего сайта, делая определенные выводы.
P.S. Меня не будет в Интернете ближайшие 4 дня, поэтому на все письма, комментарии в блоге и сообщение по icq отвечу в пятницу (11.07). Один пост будет автоматически опубликован в среду вечером, я расскажу о результатах эксперимента с привлечением трафика из новостных социальных сайтов. Не пропустите! До скорых встреч.
P.S. Постовой. Лучший блог хостинг. Только индивидуальный подход. Домен в подарок.
Чтож, постараюсь применить это на своем блоге, будет это блище к выходным. При хорошем стечении обстоятельств опубликую свои результаты.
Это все экономии на спичках. Экономят на запросах в базу, а удаление этих записей не уменьшает их количество..
стоит ли полученая производительность (незначительная) затраченого времени? да и функции эти все там не спроста, в процесе ведения блога многое может изменится, например установите плагин для мультиязычности, будете вести блог на нескольих языках, через несколько лет поменяете название css .. мало ли что, а про то, что было изменено можно забыть, и потом с апдейтом получить много проблем..
в общем я против этого, хотя все что написано полезно для понимания работы вордпреса и для повышения интереса к ковырянию в нем
Привет! Насколько я понимаю bloginfo и т.п. основаны на запросах, которые wordpress делает по умолчанию… там ему просто необходимы эти данные и используешь ты bloginfo или нет безразницы. Думаю более актуальная тема все таки с кэшированием данных. WordPress слишком глубоко засел в свои дебри так что имеет то, что имее :)
Буквально сегодня читал почти один в один статью, только она покороче будет (блог не помню).
Tod, я рад, что вдохновил Вас на написание статьи, но справедливости ради отмечу, что в своей статье я говорил о том, что удаление этих всех «спичек» является абсолютно бессмысленным — запросы на них не экономятся (разве что в ветке 2.3 с отключенным кэшем).
Хардкодинг — занятие неблагодарное и чреватое проблемами в будущем.
В принципе, если не охота, то делать это не обязательно:) Я согласен, но выигрыш в производительности минимален, но с другой стороны лично мне «лишние» функции загромождали код шаблона, поэтому я от них избавился.
Вот спасибки, занес пост в любимые закладки ибо запомнить такое не получится, пусть все говорят что выигрыш минимален, а как говорится: «курочка по зернышку клюет», вообщем не помешает.
После прочтения твоей статьи заменил часть кода на вордпрессе, правда не всё (боюсь в базу лезть). Но реальной скорости увеличения открытия страниц не увидел.
Flash`er, если ты посмотришь комментарии выше, то заметишь, что все склоняются к такому же выводу:) Я тоже, в принципе. Возможно, уместно было бы заметить название поста с «оптимизация блога» на «зачистка шаблона от ненужных тэгов». Занятие на любителя, конечно. Я удалил и заменил все лишнее (для меня лично).
Из написанного, заменил только стандартный урл подписки на rss — на фидбарновский. Остальное — особо не мешает
Как удалить с title название блога при просмотре самой статьи ?
Дмитрий, можно установить плагин All in One SEO Pack, где есть настройки для тайтла.
Добрый!
Подскажите, если встречалось: тэг [code][/code] , выводит лишний слэш в адресе, вот так : … /wp-content/themes//grteve/favicon.ico пока не удается найти где…
Установлен WP MU, или теперь MS
…
не угадал /
…
job, если честно, не понял о чем вообще идет речь. Если есть лишний слеш в коде, его просто нужно убрать в шаблоне и все.
Шаблонов много, и добавляются постоянно. Надо искоренить причину, где при вызове bloginfo стоит лишний слеш. Вопрос где?
Появляется он только при выводе stylesheet_directory, темы стоят правильно themes/имя темы/, без подпапок. При этом — отображаются нормально
опять выпали <?php bloginfo(‘rss_url’); ?> <?php bloginfo(‘atom_url’); ?> <?php bloginfo(‘pingback_url’); ?>
job, можно вручную записать без всяких bloginfo, посмотреть какой правильный путь будет и указать.
Концов найти не удалось, но судя по всему это как то связано с дочерними темами в 3.1.
Менять вручную не выход, темы добавляются и обновляются.
Полезный материал.
Но так обламывает в коде копошиться, уже вторую статью читаю, и обламывает вдвойне.
Хотя и надо бы…
Артем, сегодня опубликовал еще и третью. По поводу кода согласен, особенно, если у тебя не один проект) Но можно купить готовые решения.
Почистил код как описано, но на скорости загрузки страницы это никак не отразилось…
Александр, прирост производительности если и будет то весьма незначительный. Статья по оптимизации скорости загрузки сайтов на wordpress чуть больше расскажет о решение вопроса загрузки.
мне вот что интересно, если вот так «оптимизировать» код, после обновления движка, разве все не станет так как было ?
Мак_Сим, эти правки сделаны в шаблоне, поэтому при обновлении вордпресс все будет работать более-менее стабильно. Иногда просто в новых версиях убирают какие-то функции, но не часто.
Полезная инфа, а я как раз сейчас занимаюсь ускорением блога и обязательно воспользуюсь вашими советами. Спасибо!