Оптимизация WordPress: чистый код вместо плагинов (часть2)
Продолжаю тему оптимизации WordPress путем замены плагинов обычным PHP кодом и функциями системы. В прошлом посте я рассказал как сделать:
- Предыдущий и следующий пост в выбранной категории
- Отображение иконок для категорий
- Отображение иконки автора поста
Что ж, продолжим.
Отображение даты и времени последнего обновления поста
Опция, в принципе, полезная — позволяет читателям определить свежесть и актуальность той или иной заметки. Конечно, самый простой способ для решения этой проблемы — использовать плагин Last modified. Но, поскольку, наша цель сократить зависимость от плагинов до минимума, то вместо него предлагается использовать код:
Updated on <?php $x = get_the_time('U'); $m = get_the_modified_time('U'); if ($m != $x) { the_modified_time('F d, Y'); } ?> |
Данный код проверяет в базе данных значение последнего изменения (last modified) для текущего поста. Можно поменять значение ‘F d, Y’ для вывода нужного вам формата даты. В качестве альтернативы можете поставить бесплатно Clearfy плагин, который кроме Last modified имеет еще 4 десятка полезных параметров и позволяет заменить несколько других модулей.
Отображение рандомных изображений
Много сделано для создания возможности генерировать случайные (рандомные) вещи с помощью кода. Блоги на wordpress — не исключение. Отображение разных баннеров или изображений в шапке может придать проекту некоторой свежести. Вообще случайно отображаемые изображения могут послужить разным целям, а хорошая новость заключается в том, что для этого не требуется использовать специальные плагины. Для сложных реализаций, в принципе, модули могут пригодится, хотя опять же не обязательно. На самом деле существует множество методов вызвать случайные изображения — с помощью JavaScript, PHP и даже SQL. Для сегодняшнего «трюка» мы будем использовать небольшой код на PHP.
Для начала создайте директорию на ФТП и наполните ее разными изображениями. Имена файлов должны совпадать с используемыми в коде:
<?php $images = array( 'image-01.png', 'image-02.png', 'image-03.png', 'image-04.png', 'image-05.png', ); $image = $images[array_rand($images)]; $output = "<img src=\"http://domain.tld/path/to/image/directory/" . $image . "\" alt=\"Refresh browser for random image\" />"; echo $output; ?> |
Перед применением кода замените название файлов и путь к директории на нужные вам. Ничего больше не требуется — можете использовать сколько угодно изображений без всяких плагинов.
Кстати, я уже как-то писал про рандомный контент, где рассказал, во-первых, зачем это нужно, а во-вторых, как добиться вывода различного HTML кода или просто текстовых строк в случайном порядке.
Автоматический редирект RSS фида на Feedburner
Наверное, большинство из вас знают самый популярный метод решения задачи — использовать плагин Feedsmith. Модуль, безусловно, хорош, но ведь можно обойтись и без него. Если не боитесь править htaccess файл и уверены в своих силах, то для перенаправления используйте следующие настройки
Перенаправление основного RSS потока
# temp redirect wordpress feeds to feedburner <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/perishablepress [R=302,NC,L] </IfModule> |
Перенаправление RSS потока комментариев
# temp redirect wordpress comment feeds to feedburner <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^comments/feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/perishablepress [R=302,NC,L] </IfModule> |
Чтобы использовать код, отключите сначала все плагины, которые занимаются перенаправление потока на Feedburner, а затем скопируйте и вставьте код в ваш htaccess файл. ВНИМАНИЕ! Убедитесь, что вы заменили адрес потока в примере «http://feeds.feedburner.com/perishablepress» на свой собственный! После
внедрение, проверьте правильно работы перенаправления фида с помощью
Feed Validation Service.
Заключение
Приведенные в 2-х частях примеры кода вместо ненужных плагинов — это лишь начало. Существует еще очень много плагинов, которые можно смело заменить. Тем не менее, я не призываю удалять все подряд, некоторые модули весьма полезны. Кроме того, вы должы быть более-менее опытным пользователем. Просто помните, что использование сторонних модулей увеличивает риск взлома админки. Кроме того, не нужно будет беспокоится о работе устаревших плагинов при обновлении WordPress.
Этот и предыдущий посты написаны по мотивам статьи — Pure Code Alternatives for 7 Unnecessary Plugins. Спасибо ее автору за прекрасный материал, кое что я уже достаточно давно использую у себя в блоге!
А что вы думаете по поводу такой оптимизации — поддерживаете или нет?
P.S.Заходите в MakeUp интернет магазин косметики доставка по Украине.
Автор пиши ещё! Я думаю у многих с правкой и добавления функций в коде возникают проблемы, в том числе и меня =) такие посты будут многим полезны стопудоф!
полезная статья спору нет. но всё же перед применением подобных рецептов для своего блога надо все внимательно причитать, а потом перетестить все самому под разными бразерами.
пригодились два совета: замена feedsmith на mod_rewrite и previous_post_link/next_post_link (из предідущей статьи)
в любом случае спасибо :)
ps: FireFox 3.0.3 как-то мутно кєширует редиректы, после замены feedsmith рекомендую все таки перезапустить браузер, а не ограничиваться только Ctrl+F5
Аким, спасибо за похвалу:) Из всех кодов мне пригодились рандомные тексты, ну и картинки. Вот для категорий, может, иконки приделаю. Было давно такое желание.
Было бы превосходно, если бы ты еще и приводил конкретные цифры — на сколько ускоряет работу блога та или иная замена :)
Но и так полезно, спасибо!
Алексей Качаев, я пока не настолько сильно вникал во все примудрости вордперсс, в том числе и расходование памяти или быстродействие. Просто для себя знаю, что иногда в плагинах тааакое понаписывают, что там будет 10 обращений к базе вместо одно, при этом еще уязвимость какую-то добавят) Поэтому стараюсь сократить риски до минимума.
2Алексей Качаев
Как вариант, помещаем в footer.php темы примерно такой код, и начинаем экспериментировать с плагинами
ps: так можно определится с количеством SQL запросов более менее однозначно
Аким, спасибо! Теперь действительно можно попробовать:) Могу поспорить, что некоторые выводят подобную информации через плагины)
2 Aким
попробывал.
generated: 0.552sec | queries: 23
дальше не прошло, ругалось на ошибки
кстати — как результат? не слишком медленно получилось?
2 vVv
сложно сравнить абсолютно два разных хостинга.
зависит от установленных плагинов, сервера и страницы где проверяется.
у меня на разных блогах:
generated: 0.375sec | queries: 50 | mem usage: 20.25mb
generated: 0.250sec | queries: 16 | mem usage: 17mb
ps: отключая по очереди можно вычислять самых «зажравшихся» :)
оптимизация вордпресс шаг 3 — пишем свой движек :)
Yuriy Drozdov, не думаю, что каждому это под силу:)
Я попробовал поставить рандомные фотки (давно уже хотел). Выводится на сайте только текст в alt-е который указан, картинки нет. Причем жму правой по alt-у и открываю свойства картинки — картинки меняются, это видно, но реально они не отображаются. Что может быть?
drStas, это может быть ошибка в коде. Можешь выслать на почту stod84@gmail.com кусок кода, который ты используешь для вставки изображений. Будем смотреть:) Заодно в субботу, думаю, гляну как оно на самом деле работает, может автор статьи немного ошибся.
Писать свой блоговый движек — не вариант. Я сперва начал, но потом бросил эту затею. Немерено времени уйдёт на это, хотя да, практика никогда не помешает.
Сейчас вот на локальной машине установил последнюю версию, буду экспериментировать. Всё же лучше, чем с чистого листа писать. И, постораюсь снизить число запросов, а где можно динамический контент на статический заменю :)
Спасибо, пригодилось. Теперь буду думать, где можно применить на практике
Искал подходящую тему, где бы можно было задать вопрос. Эта тема вроде подходит. Я смотрю у вас есть широкий сайдбар «Последние записи», а потом уже идут два узких. Как сделать такой широкий сайдбар, на ширину двух колонок и чтобы две узкие колонки сохранились?
Alex Stone, варианта есть 2 — подсмотреть код сайдбара у меня либо скачать и глянуть шаблон wordpress, который поддерживает такую функциональность. В обоих случаях, конечно, нужно немного разбираться в html и css.
А вы сами сделали такой широкий сайдбар или оно уже было в шаблоне? И не собираетесь ли вы описать как это делается или, может быть, знаете, где это уже описано?
А как добавить ссылки в код? То есть чтобы картинки являлись ссылками. Каждой картинке, своя ссылка.
Александр, добавлять в массив значений не просто урл для картинки, а строку кода для ее отображения начиная с тега ссылки А, потом IMG.
Спасибо вам за код для даты и времени последнего обновления поста, но у меня к вам вопрос. Ведь этот же код всего лишь для вывода даты последнего обновления. А нет ли у вас такого кода, который бы Last-Modified отдавал поисковикам? А то я ваш код вставил, но после проверки вот этим сервисом: last-modified.com/ru я увидел, что Last-Modified не отдаётся.
Lovedancer, с таким не разбирался, нужно погулить, думаю решение уже кто-то рассматривал.
…уже целый день этим занимаюсь =( ….но так и не нашёл….и темы уже на вордпрессовских форумах оставил….и кстати при проверке вашего блога, система тоже пишет, что Last-Modified не найден!
….а ведь в руководстве веб мастеров, чёрным по белому написано:
Убедитесь, что ваш веб-сервер поддерживает HTTP-заголовок «If-Modified-Since». Этот заголовок позволит веб-серверу сообщать Google, изменилось ли содержание сайта со времени последнего сканирования. Поддержка данной функции сократит нагрузку на пропускную способность и издержки.
Lovedancer, мне кажется это больше «рекомендация» нежели требование. Гугл и без этого постоянно обновляет информацию и индексирует достаточно быстро, чему, наверное, отчасти способствует наличие RSS подключенного к Feedburner.
Ну рекомендации тоже бы хотелось выполнить, но про то я понял. Кстати хостер мне сказал, что они могут сделать эту тему на уровне сервера, единственное, что на моём хостинге эти услуги платные. Спасибо вам ответы. Всего вам доброго.