Rewrite rules – это просто, или делаем свои ЧПУ

Тема простых, красивых и легко запоминающихся адресов страниц, так называемых ЧПУ (человеко-понятных-урл) знакома практически каждому блоггеру. В рамках WordPress превращение загадочных ссылок вида www.myblog.ru/index.php?p=231 в понятные даже ребенку ссылки типа www.myblog.ru/zarabotok/kak_zarabotat_million происходит буквально парой нажатий мышкой в админке WordPress. Лезем в «Настройки->Постоянные ссылки», задаем желаемую структуру ссылок и вуаля, и все работает (ну если, конечно, у вас нормальный хостер с нормальным веб-сервером). Ну это и так всем известно, а вот что же делать, если вам по каким-либо причинам хочется прикрутить к WordPress какой-нибудь нестандартный модуль или самописный плагин, или просто дать ссылку из блога на некий php-скрипт, что-то там обрабатывающий и находящийся на вашем же сервере, и при этом хочется, чтобы у этой ссылки тоже был красивый человекопонятный адрес? С помощью постоянных ссылок WordPress преобразованию подвергнутся только стандартные вордпрессовские ссылки на категории, теги, посты и т.д. О вашем же скрипте WordPress, естественно, ничего не знает, и превращать всякие левые адреса в нормальные урлы не собирается. Так вот, наша задача – сообщить ему о наличии еще некоторых адресов, которые нужно привести к человеческому виду. Продвинутые читатели, конечно, уже догадались, что далее речь пойдет о модуле mod_rewrite веб-сервера Apache и его связи с WordPress.

Читать дальше комментариев: 4

Определяем возраст поста

При ведении блога иногда возникает необходимость проделать с постом какие-либо манипуляции по достижении им определенного возраста. Например, добавить метки типа «архивный пост» либо вывести рекламу только в постах старше определенного возраста. Сделать это довольно просто. В файл функций вашей темы functions.php нужно добавить следующую функцию:

function is_old_post($days = 5) {
	$days = (int) $days;
	$offset = $days*60*60*24;
	if ( get_post_time() < date('U') - $offset )
		return true;

	return false;
}

Ну а затем можно в нужном месте использовать эту функцию следующим образом:

if ( is_old_post(10) ) {
	// если пост старше 10 дней, сделать что-то
} else {
	// в противном случае сделать что-то другое
}

Если параметр функции не задан, то «старым» будет считаться пост, опубликованный старше 5 дней назад.

Читать дальше комментариев: 3

6 полезных хаков WordPress

Что такое хуки в WordPress, с чем их едят, и зачем они нужны, я уже рассказывал в статье Что такое хук?
Пришла пора поговорить о конкретных применениях этого чрезвычайно полезного механизма в ваших блогах. Не будем долго растекаться мыслью по древу, к делу – вот некоторые приемы, позволяющие расширить стандартную функциональность вашего WordPress сайта.
1. Определение браузера посетителя.
Одна из головных болей разработчика веб-сайта – это обеспечение одинакового вида страница в разных браузерах, так называемая кросс-платформенная совместимость. В идеале, конечно, написанный вами код должен одинаково выполнятся в любом из современных браузеров, но тем не менее возможность определить конкретный браузер пользователя, и в зависмости от этого изменить код страницы иногда остается единственным способом корректно отобразить сайт во всех популярных браузерах. Наверное не все знают, что в WordPress есть уже встроенные механизмы определения браузера посетителя. Вот ими и воспользуемся.

Читать дальше комментариев: 2

Что такое хук?

В WordPress есть одна замечательная возможность, грамотное использование которой значительно расширяет функциональность вашего блога, а также позволит вам отказаться от некоторых плагинов. А чем меньше плагинов – тем быстрее и надежнее работает блог.
Эта возможность Вордпресс называется хук, или Hook. Оказывается, вы можете вставить свою функцию внутрь одной из стандартных функций Вордпресс, расширив тем самым ее возможности, причем без необходимости лезть в код непосредственно самого WordPress!
Для разработчиков плагинов я, конечно, не открыл сейчас Америки. Почти в каждом плагине и во многих шаблонах используются «хуки». Однако далеко не все из нас разработчики, а написание и правильное оформление плагина под Вордпресс дело не такое уж легкое. Хуки же гораздо проще и безопаснее, чем правка непосредственно код ключевых функций Вордпресс или использование сторонних шаблонов неизвестной надежности.
Но ближе к делу. Как же создаются и используются «хуки»? В папке вашей темы wp-content/themes/yourtheme находится файл functions.php. Вот там-то мы и будем прописывать наши дополнительные функции. Например, мы написали некую функции и хотим вставить ее в одну из стандартных функции Вордпресс:

add_action ( 'publish_post', 'myCustomFunction' );

В этом примере мы внедрили нашу функцию myCustomFunction в обычную функцию Вордпресс publish-post, и теперь при каждом ее выполнении движком WP будет автоматически выполнятся и наша функция.
Какое же применение можно найти этой возможности? Да массу. Вспомним распространенную задачу, с которой сталкивался почти каждый блоггер. В конце каждого поста вам необходимо вывести некую информацию, рекламу или добавить картинку. Конечно, можно отредактировать single.php вашей темы и добавить после функции the_content() то, что вам нужно. Однако при таком способе ваш текст не будет отображатся в RSS ленте блога. Хук дает нам более изящное решение. Просто вставьте этот код в файл functions.php вашей темы.

function insertFootNote($content) {
        if(!is_feed() &amp;&amp; !is_home()) {
                $content.= &quot;&lt;div class='subscribe'&gt;&quot;;
                $content.= &quot;&lt;h4&gt;Enjoyed this article?&lt;/h4&gt;&quot;;
                $content.= &quot;&lt;p&gt;Subscribe to our  &lt;a href='http://feeds2.feedburner.com/WpRecipes'&gt;RSS feed&lt;/a&gt; and never miss a recipe!&lt;/p&gt;&quot;;
                $content.= &quot;&lt;/div&gt;&quot;;
        }
        return $content;
}
add_filter ('the_content', 'insertFootNote');

Работает этот код очень просто. Переменная $content содержит текст вашего поста, к которому наша функция insertFootNote прибавляет еще несколько строк текста. Затем эта фукция встраивается в стандартную функцию вывода содержимого записи the_content(), при каждом вызове которой пост отобразится уже с добавленным текстом.
Обратите внимание, что во второй строке стоит условие (!is_feed), не позволяющее добавляться вашему тексту в RSS ленту. Если вы хотите, чтобы и в ленте отображался введенный вами дополнительный текст, замените вторую строчку на

if (!is_home()) { 

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

Читать дальше комментариев: 1
79 / 0,614 / 20.1mb