<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Очередной блог фрилансера &#187; filter</title>
	<atom:link href="http://dreamhelg.ru/tag/filter/feed/" rel="self" type="application/rss+xml" />
	<link>http://dreamhelg.ru</link>
	<description>о моей работе в сети и не только</description>
	<lastBuildDate>Mon, 21 May 2012 14:37:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WordPress. Фильтруем HTML в записях и комментариях</title>
		<link>http://dreamhelg.ru/2010/01/wordpress-adding-and-filtering-raw-html-in-post-and-comments/</link>
		<comments>http://dreamhelg.ru/2010/01/wordpress-adding-and-filtering-raw-html-in-post-and-comments/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 08:03:44 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1806</guid>
		<description><![CDATA[<p><img width="200" height="200" src="http://dreamhelg.ru/wp-content/uploads/2010/01/home.png" class="attachment-200x200 wp-post-image" alt="home" title="home" /></p>Я давно уже наблюдаю мучения читателей, которые пытаются оставить примеры html-разметки в комментариях. К сожалению, в прошлом году, долго не находилось времени, для решения этой проблемы.
Но сегодня, с радостью хочу объявить о том, что проблема наконец-то решена – теперь вы можете использовать любую html-разметку в комментариях, предварительно заключив ее в теги &lt;code&gt;, а если вам интересно как это реализовано, то читайте далее.<span id="more-1806"></span>

<h3>Описание проблемы</h3>
HTML – это структурированный язык разметки, в котором текст заключается внутри тегов с угловыми скобками. Эти тэги сообщает браузеру, каким образом необходимо структурировать/отобразить информацию, содержащуюся между ними. Одни из самых распространенных тегов – это открывающий и закрывающий тег параграфа (<code>&lt;p&gt;</code>, <code>&lt;/p&gt;</code>); они сообщают браузеру, что текст, который находится внутри, является параграфом, в общей структуре документа.

<em><strong>Но что если, вы захотите показать читателям пример html-разметки?</strong></em>

Вы не сможете вывести тэги на экран, просто напечатав их, поскольку браузер решит, что это html-код и не отобразит их. Поэтому, для того чтобы вывести html-код, мы должны использовать специальные угловые скобки. Для вывода таких скобок используется их символьный объект –  специальный код, который выведет нужный символ. Этот код может быть как в форме имени, так и в форме числа, можно использовать то, что больше нравится. Например, прямые кавычки “ можно вывести двумя способами – используя объект-имя <code>&amp;quot;</code> или объект-число <code>&amp;#34;</code>.

Левую угловую скобку можно вывести с помощью <code>&amp;lt;</code> или <code>&amp;#60;</code>. В нашем примере, для вывода угловых скобок, мы будем использовать символьные объекты <code>&amp;lt;</code> и <code>&amp;gt;.</code>

<h3>Добавляем HTML-код в текст записи WordPress</h3>
Теперь, после того как мы разобрались, как отобразить HTML-код на экране, давайте разберемся как нам это использовать в записях WordPress. На первый взгляд все очень просто – нужно всего лишь заменить левые и правые угловые скобки в их символьные эквиваленты. Это хорошо пока у вас одна-две строчки кода, но что делать, если их значительно больше? Существуют различные плагины для решения этой проблемы, но большинство их них требуют дополнительной разметки в статье.

Поэтому я решил создать WordPress-фильтр, который будет находить определенные секции записи и автоматически конвертировать угловые скобки в их числовой эквивалент.

С помощью специального фильтра WordPress, мы сможем нормально отображать примеры html-кода в статьях и комментариях, внутри тегов <code>&lt;pre&gt;</code>.

<h3>Фильтры WordPress</h3>
Из Кодекса:

<blockquote><em>Фильтры – это функции, через которые WordPress пропускает данные, в определенные моменты исполнения, до того, как с ними будут произведены какие-то действия (такие как добавление в базу данных или отображение в окне браузера).</em></blockquote>

Итак, мы создадим специальный фильтр, который будет отыскивать контент, находящийся внутри тэгов <code>&lt;pre&gt;</code>, и конвертировать код, прежде чем отображать его на экране.

<h3>Специальный WordPress HTML фильтр</h3>
Вот так выглядит код фильтра:

[php]
&lt;?php
function mish_code_filter($content_text) {
    $content_text = preg_replace('!(&lt;pre.*?&gt;)(.*?)&lt;/pre&gt;!ise', &quot; '$1' .  stripslashes( str_replace(array('&lt;','&gt;'),array('&amp;lt;','&amp;gt;'),'$2') )  . '&lt;/pre&gt;' &quot;, $content_text);
    return $content_text;
    }

add_filter('the_content','mish_code_filter', 1, 1);
?&gt;
[/php]

Теперь, давайте разберем код на части. Сначала мы создаем новую функцию, под названием “<code>mish_code_filter</code>”:

[php]
function mish_code_filter($content_text) {
    &lt;!-- function actions --&gt;
    }
[/php]

Далее, мы описываем, что будет делать функция. В нашем примере, мы используем PHP-функцию <code>preg_replace()</code>, которая будет отыскивать текст внутри тэгов <code>&lt;pre&gt;</code>…

[php]
$content_text = preg_replace('!(&lt;pre.*?&gt;)(.*?)&lt;/pre&gt;!ise',
[/php]

…и заменять их на зашифрованный текст:

[php]
&quot; '$1' .  stripslashes( str_replace(array('&lt;','&gt;'),array('&amp;lt;','&amp;gt;'),'$2') )  . '&lt;/pre&gt;' &quot;,
[/php]

Вторая часть функции <code>preg_replace()</code>, использует две PHP-функции: <code>stripslashes()</code> и <code>str_replace()</code>.

<strong><code>stripslashes()</code> </strong>удаляет обратные слэши (\), которые добавляет WordPress, до того как вставляет запись в базу данных. Обычно, WordPress самостоятельно удаляет эти слэши, до того как вывести контент на экран, но поскольку наш фильтр инициализируется до того как данные будут отображены, эта функция обязательна.

<strong><code>str_replace() </code></strong>– ищет угловые скобки и заменяет их на символьные объекты.

<code>$1</code> и <code>$2</code> – это значения выражения, где <code>$1 = (&lt;pre.*?&gt;)</code> и <code>$2 = (.*?)</code>.

Последняя часть функции возвращает значение (результат) функции, чтобы мы могли его использовать:

[php]
return $content_text;
[/php]

Теперь, нам нужно внедрить наш фильтр в WordPress, так, чтобы он срабатывал в определенное время. В нашем случае, мы внедрим фильтр, внутрь фильтра «t<code>he_content</code>»:

[php]
add_filter('the_content','mish_code_filter', 1, 1);
[/php]

Фильтр “<code>the_content</code>”, как нетрудно догадаться, используется для фильтрации записей, после того, как они получены из базы данных и до того, как они выведены на экран. Поэтому, в нашем случае, мы сообщаем вордпрессу, о том, что наш фильтр (<code>mish_code_filter</code>) нужно использовать совместно с фильтром “<code>the_content</code>”.

Первая единица в годе, говорит WordPress, о том, что фильтр имеет высокий приоритет и должен быть выполнен раньше любых, других фильтров. Вторая единица говорит WordPress, о том, что мы передаем нашему фильтру только 1 параметр.

<h3>Установка Фильтра</h3>
Откройте ваш файл <em>functions.php</em> (расположен в папке с вашей темой), и вставьте туда следующий код:

[php]
&lt;?php
function mish_code_filter($content_text) {
    $content_text = preg_replace('!(&lt;pre.*?&gt;)(.*?)&lt;/pre&gt;!ise', &quot; '$1' .  stripslashes( str_replace(array('&lt;','&gt;'),array('&amp;lt;','&amp;gt;'),'$2') )  . '&lt;/pre&gt;' &quot;, $content_text);
    return $content_text;
    }

add_filter('the_content','mish_code_filter', 1, 1);
?&gt;
[/php]

<h3>Фильтр для Комментариев</h3>

Наш фильтр также можно использовать для фильтрации html, в тексте комментариев, для этого понадобятся совсем небольшие изменения. Первое, что нам нужно сделать – это заменить фильтр «<code>the_content</code>», на фильтр «<code>comment_text»</code>, который выполняет ту же функцию, только для текста комментариев.

Ну и второе, необязательное изменение – теги <code>&lt;pre&gt;</code> мы заменим на теги <code>&lt;code&gt;</code>, так как они чаще используются в тексте комментариев. В результате у нас получится вот такой фильтр:

[php]
function mish_code_filter($content_text) {
    $content_text = preg_replace('!(&lt;code.*?&gt;)(.*?)&lt;/code&gt;!ise', &quot; '$1' .  stripslashes( str_replace(array('&lt;','&gt;'),array('&amp;lt;','&amp;gt;'),'$2') )  . '&lt;/code&gt;' &quot;, $content_text);
    return $content_text;
    }

add_filter('comment_text','mish_code_filter', 1, 1);
[/php]

Устанавливается он точно так же, как фильтр контента. Вот и все, можете проверить – наш фильтр работает.

<h3>Плагины с похожей функциональностью</h3>
<ul>
	<li><a href="http://wordpress.org/extend/plugins/raw-html/">Raw HTML</a></li>
	<li><a href="http://wordpress.org/extend/plugins/wp-no-format/">WP No Format</a></li>
	<li><a href="http://wordpress.org/extend/plugins/sm-clean-wordpress/">Clean WordPress</a></li>
</ul>
Перевод статьи "<a href="http://www.martinish.com/blog/2009/08/adding-and-filtering-raw-html-in-wordpress-posts/">Adding and Filtering Raw HTML in WordPress Posts</a>", автор <strong>Martin</strong>]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2010/01/wordpress-adding-and-filtering-raw-html-in-post-and-comments/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>WordPress. Создаем запись только для подписчиков RSS</title>
		<link>http://dreamhelg.ru/2009/11/create-post-only-for-your-rss-subscribers-in-wordpress/</link>
		<comments>http://dreamhelg.ru/2009/11/create-post-only-for-your-rss-subscribers-in-wordpress/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 07:30:41 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1680</guid>
		<description><![CDATA[<p><img width="150" height="130" src="http://dreamhelg.ru/wp-content/uploads/2009/11/402.png" class="attachment-200x200 wp-post-image" alt="rss_icon" title="402" /></p>Для поощрения своих постоянных читателей, владельцам блогов иногда нужно создавать записи только для своих RSS-подписчиков. В сегодняшней статье вы узнаете, как это сделать с помощью WordPress.<span id="more-1680"></span>

Первое, что вам нужно сделать – это создать специальную рубрику, записи которой будут доступны только для RSS-подписчиков. Предположим, вы создали новую рубрику «Только по RSS».

После создания рубрики, вам нужно будет узнать ее <code>ID</code>. Это определяется очень просто, зайдите на страницу редактирования рубрики, и ее ID отобразится в адресной строке браузера.

Теперь, откройте файл вашей темы <em>functions.php</em> в любом редакторе. Если в вашей теме нет такого файла, создайте его. Добавьте следующий код в файл <em>functions.php</em>.

[php]
&lt;?php  
function excludeCategory($query)  
{  
    if($query-&gt;is_home | $query-&gt;is_archive )  
    $query-&gt;set('cat','-3');  
    return $query;  
}  
add_filter('pre_get_posts', 'excludeCategory');  
?&gt;  
[/php]

<code>pre_get_post</code> -  это специальный фильтр WordPress, который запускается до получения записей из базы данных. С помощью этого фильтра, мы исключаем, указанную выше рубрику со всех страниц кроме RSS-ленты. Обратите внимание, что для исключения рубрики, используется знак минус, перед <code>ID</code>.

Так что теперь, когда вы добавите запись  в рубрику «Только по RSS», она не отобразится на главной странице, странице рубрики, в тегах или архивах; эта запись будет доступна только вашим RSS-подписчикам.

И наконец, если вы используете в своей теме функцию <code>wp_list_categories()</code>, для отображения рубрик, вам необходимо передать параметр, исключающий нашу rss-рубрику из общего вывода.

[php]
wp_list_categories('exclude=3');  
[/php]

А если вдруг функция <code>wp_list_categories</code>, уже имеет какие-то параметры, то добавить еще один, можно с помощью знака &amp;.

[php]
wp_list_categories('show_count=1&amp;exclude=3');  
[/php]

Вот так довольно просто, можно создавать статьи только для читателей RSS-ленты. Если вы знаете еще какие-то способы реализации такой задачи, расскажите о них.

Перевод статьи "<a href="http://webdeveloperplus.com/wordpress/create-post-only-for-your-rss-subscribers-in-wordpress/">Create Post Only For Your RSS Subscribers in WordPress</a>"]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/11/create-post-only-for-your-rss-subscribers-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>WordPress. Обзор фреймворков</title>
		<link>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/</link>
		<comments>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 04:18:31 +0000</pubDate>
		<dc:creator>dreamhelg</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[переводы]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[инструменты]]></category>

		<guid isPermaLink="false">http://dreamhelg.ru/?p=1080</guid>
		<description><![CDATA[WordPress-фреймворк это обычная WordPress-тема, разработанная в качестве гибкой основы, служащая родительской темой, для создания дочерней темы. Хотя еще не все оценили фреймворки по достоинству, они все равно приносят большую пользу [...]]]></description>
		<wfw:commentRss>http://dreamhelg.ru/2009/08/wordpress-explained-frameworks/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

