<?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; Wordpress</title>
	<atom:link href="http://seogad.ru/cms/feed" rel="self" type="application/rss+xml" />
	<link>http://seogad.ru</link>
	<description>Бизнес, интернет, путешествия, творчество</description>
	<lastBuildDate>Fri, 03 Feb 2012 15:54:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Современный блогролл</title>
		<link>http://seogad.ru/cms/blogroll</link>
		<comments>http://seogad.ru/cms/blogroll#comments</comments>
		<pubDate>Sun, 13 Mar 2011 16:51:39 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[виджет]]></category>
		<category><![CDATA[дружба]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[ссылки]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=5378</guid>
		<description><![CDATA[Всем привет! Давно не rss-сились. Сегодня я сделал своему блогу небольшой подарок, добавив в сайдбар новенький блогролл. Замечателен он тем, что в нём отображаются не намертво пришитые ссылки, а последние записи недавно обновлённых блогов. Таким образом, в блогролл можно добавлять сколько угодно ссылок, но показываться будут только те, кто что-нибудь напишет, да и то недолго. [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет! Давно не rss-сились. Сегодня я сделал своему блогу небольшой подарок, добавив в сайдбар новенький блогролл. Замечателен он тем, что в нём отображаются не намертво пришитые ссылки, а последние записи недавно обновлённых блогов.</p>
<p><img src="http://seogad.ru/wp-content/uploads/2011/03/13-03-2011-blorgoll.jpg" alt="" title="Современный обновляемый блогролл" width="470" height="313" class="aligncenter size-full wp-image-5387" /></p>
<p>Таким образом, в блогролл можно добавлять сколько угодно ссылок, но показываться будут только те, кто что-нибудь напишет, да и то недолго. Чтобы ежедневно находиться в блогролле, писать автору блога придётся часто, так как не он один такой интересный.<span id="more-5378"></span></p>
<p>В общем, по данной схеме довольными остаются все: </p>
<ul>
<li>блогеры, потому что практически сразу после публикации они получают автоматическую ссылку на свой свежий пост; </li>
<li>читатели, которые видят только обновляемые блоги;</li>
<li>автор блога, который не парится о количестве ссылок и добавляет в блогролл столько ссылок, сколько захочет.</li>
</ul>
<p>Впервые обратил внимание на подобную штуку на блоге <a href="http://brokenbrake.biz/">Тормоза</a>, у него блог не на Wordpress, и как он делал свой блогролл, я не знаю, поэтому пришлось поискать что-нибудь местного разлива, и это что-нибудь, к счастью, нашлось.</p>
<p>Называется плагин <a href="http://www.pantsonhead.com/wordpress/rss-blogroll/">RSS Blogroll</a>. Скачиваем, настраиваем, и наслаждаемся.</p>
<p>Единственный момент&nbsp;&mdash; крайне некрасивый вывод по умолчанию и не особо с ним можно развернуться, CSS-то подправить не проблема, а вот в код плагина как-то лениво залезать.</p>
<p>Не крут плагин, например, в том, что заголовок блога вытягивается из RSS-канала, а не указывается администратором блога.</p>
<p>Название, &laquo;Продвижение сайтов, веб-дизайн и креатив&raquo; конечно говорит о тематике блога, но всё же приятнее было бы видеть здесь что-то вроде &laquo;<a href="http://shakin.ru/">Михаил Шакин</a>&raquo;. А для определения тематики хватит и заголовка свежей статьи.</p>
<p>В общем, если кто-то покапается в коде плагина или найдёт что-нибудь более похожее на то, что есть у Тормоза, буду признателен, если поделитесь результатом труда или поиска.</p>
<p>А пока призываю вас устанавливать на свои блоги подобные необычные блогроллы, потому что это современно, удобно и всячески круто.</p>
<p>Желаю вам ума и денег =)<br />
<a href="http://seogad.ru">Артём Савельев</a></p>
<p><em>P.S. Если кто-то хочет попасть ко мне в блогролл, не стесняйтесь&nbsp;&mdash; пишите комментарий, я посмотрю ваш блог и вполне вероятно, добавлю его, если он действительно интересный.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/blogroll/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Изменение структуры ЧПУ в дополнительном типе записей Wordpress</title>
		<link>http://seogad.ru/cms/custom-permalinks-in-custom-post-types</link>
		<comments>http://seogad.ru/cms/custom-permalinks-in-custom-post-types#comments</comments>
		<pubDate>Sun, 14 Nov 2010 20:54:47 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Custom Post Types]]></category>
		<category><![CDATA[permalinks]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=3945</guid>
		<description><![CDATA[Недавно я рассказывал вам о том, как сделать дополнительный тип записей для публикации новостей. После того, как он появился на блоге, я сразу отправил достаточно много заявок оптимизаторам, и теперь мне придётся поплатиться за это низкой скоростью размещения&#160;&#8212; что ж, будем умнее в будущем. А радость моя сегодняшняя в том, что один из оптимизаторов дал [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/wordpress-news-sidebar" rel="bookmark">Wordpress&nbsp;&mdash; делаем раздел новостей и выводим из него анонсы в сайдбар</a><!-- (8.8)--></li>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (7.9)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (7.1)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Недавно я рассказывал вам о том, <a href="http://seogad.ru/cms/wordpress-news-sidebar">как сделать дополнительный тип записей для публикации новостей</a>. После того, как он появился на блоге, я сразу отправил достаточно много заявок оптимизаторам, и теперь мне придётся поплатиться за это низкой скоростью размещения&nbsp;&mdash; что ж, будем умнее в будущем.</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/11/custom-permalinks.jpg" alt="" title="Изменение структуры ЧПУ в дополнительном типе записей WordPress" width="470" height="313" class="aligncenter size-full wp-image-3972" /></p>
<p>А радость моя сегодняшняя в том, что один из <a href="http://www.seorp.ru/">оптимизаторов</a> дал мне весьма дельный совет&nbsp;&mdash; избавиться от повторения &laquo;news&raquo; в адресах новостей. То есть Яндекс вполне может позволить себе <strong>зафильтровать все ссылки по категории.</strong><span id="more-3945"></span></p>
<p>Честно говоря, это меня весьма озадачило, и весь вечер я потратил на поиски решения. Ещё и коллегу напряг, которому выражаю глубокую благодарность за оказанную помощь.</p>
<p>Алексей Крылышкин, тот самый оптимизатор, посоветовал сделать url &laquo;датовыми&raquo;, но если их делать таковыми&nbsp;&mdash; то делать только для всех материалов&nbsp;&mdash; и для новостей, и для постов.</p>
<p>Иначе же Яндекс также может зафильтровать новости и по году&nbsp;&mdash; для него нет разницы, находятся сотни страниц с продажными ссылками в каталоге &laquo;news&raquo;  или &laquo;2010&raquo;, он лишь выводы делает и действует, как ему приказали.</p>
<p>В результате мне пришлось настроить отдельную структуру постоянных ссылок (ЧПУ) специально для <strong>дополнительного типа записей</strong> &laquo;Новости&raquo;. </p>
<p>Я хотел оставить в адресе только название новости, но к сожалению ничего у меня с этим не получилось&nbsp;&mdash; перестали работать обычные страницы типа &laquo;об авторе&raquo;.</p>
<p>Для того, чтобы избежать конфликта двух структур ЧПУ, пришлось вставить перед названием id материала, что конечно тоже не очень клёво смотрится, и при желании их тоже можно зафильтровать, например, по количеству цифр&nbsp;&mdash; но всё  же это менее очевидно чем рубрика, отделённая слешем, так как id по крайней мере уникальны для каждой новости.</p>
<p>Пробовал я разные варианты и наткнулся в результате на <a href="http://shibashake.com/wordpress-theme/custom-post-type-permalinks-part-2">этот пост</a>, благодаря которому у меня получилось настроить ссылки для новостей нужным образом.</p>
<p>В ближайшее время я планирую сделать перевод  этой статьи, а сегодня я поделюсь с вами кодом, который я добавил в файл <em>functions.php</em> своего шаблона.</p>
<pre>function add_permastruct2() {
	global $wp_rewrite;
$gallery_structure = &#039;/%post_id%-%news%&#039;;
$wp_rewrite-&gt;add_rewrite_tag(&quot;%news%&quot;, &#039;([^/]+)&#039;, &quot;news=&quot;);
$wp_rewrite-&gt;add_permastruct(&#039;news&#039;, $gallery_structure, false);
}

add_action(&#039;init&#039;, &#039;add_permastruct2&#039;);

// Add filter to plugin init function
add_filter(&#039;post_type_link&#039;, &#039;gallery_permalink&#039;, 10, 3);
// Adapted from get_permalink function in wp-includes/link-template.php
function gallery_permalink($permalink, $post_id, $leavename) {
	$post = get_post($post_id);
	$rewritecode = array(
		&#039;%year%&#039;,
		&#039;%monthnum%&#039;,
		&#039;%day%&#039;,
		&#039;%hour%&#039;,
		&#039;%minute%&#039;,
		&#039;%second%&#039;,
		$leavename? &#039;&#039; : &#039;%postname%&#039;,
		&#039;%post_id%&#039;,
		&#039;%category%&#039;,
		&#039;%author%&#039;,
		$leavename? &#039;&#039; : &#039;%pagename%&#039;,
	);

	if ( &#039;&#039; != $permalink &amp;&amp; !in_array($post-&gt;post_status, array(&#039;draft&#039;, &#039;pending&#039;, &#039;auto-draft&#039;)) ) {
		$unixtime = strtotime($post-&gt;post_date);

		$category = &#039;&#039;;
		if ( strpos($permalink, &#039;%category%&#039;) !== false ) {
			$cats = get_the_category($post-&gt;ID);
			if ( $cats ) {
				usort($cats, &#039;_usort_terms_by_ID&#039;); // order by ID
				$category = $cats[0]-&gt;slug;
				if ( $parent = $cats[0]-&gt;parent )
					$category = get_category_parents($parent, false, &#039;/&#039;, true) . $category;
			}
			// show default category in permalinks, without
			// having to assign it explicitly
			if ( empty($category) ) {
				$default_category = get_category( get_option( &#039;default_category&#039; ) );
				$category = is_wp_error( $default_category ) ? &#039;&#039; : $default_category-&gt;slug;
			}
		}

		$author = &#039;&#039;;
		if ( strpos($permalink, &#039;%author%&#039;) !== false ) {
			$authordata = get_userdata($post-&gt;post_author);
			$author = $authordata-&gt;user_nicename;
		}
		$date = explode(&quot; &quot;,date(&#039;Y m d H i s&#039;, $unixtime));
		$rewritereplace =
		array(
			$date[0],
			$date[1],
			$date[2],
			$date[3],
			$date[4],
			$date[5],
			$post-&gt;post_name,
			$post-&gt;ID,
			$category,
			$author,
			$post-&gt;post_name,
		);
		$permalink = str_replace($rewritecode, $rewritereplace, $permalink);
	} else { // if they&#039;re not using the fancy permalink option
	}
	return $permalink;
}</pre>
<p>Если честно, я забыл исправить в названиях функций <em>gallery</em> на что-нибудь вроде <em>news</em>, но в принципе сделать это не мешало бы, для сохранения гармонии. Если есть такая возможность&nbsp;&mdash; не поленитесь.</p>
<p>Самое основное находится в этих строчках:</p>
<pre>$gallery_structure = &#039;/%post_id%-%news%&#039;;
$wp_rewrite-&gt;add_rewrite_tag(&quot;%news%&quot;, &#039;([^/]+)&#039;, &quot;news=&quot;);
$wp_rewrite-&gt;add_permastruct(&#039;news&#039;, $gallery_structure, false);</pre>
<p>Структура ЧПУ задаётся в параметре <em>$gallery_structure</em>. Также нужно заменить все &laquo;news&raquo; на имя вашего дополнительного типа записей.</p>
<p>Кроме того, в функции добавления типа записей <em>(ищите register_post_type)</em> необходимо добавить параметры <em>&#39;query_var&#39; => true</em> и <em>&#39;rewrite&#39; => false</em>. У меня, например, получилось в итоге следующее:</p>
<pre>function post_type_news() {
	register_post_type(
                &#039;news&#039;,
                array(
                        &#039;label&#039; =&gt; __(&#039;News&#039;),
                        &#039;public&#039; =&gt; true,
                        &#039;show_ui&#039; =&gt; true,
						 &#039;publicly_queryable&#039; =&gt; true,
						 &#039;query_var&#039; =&gt; true,
						 &#039;rewrite&#039; =&gt; false,
                        &#039;supports&#039; =&gt; array(
											&#039;title&#039;,
											&#039;editor&#039;,
                                     &#039;excerpts&#039;,
                                     &#039;custom-fields&#039;,
                                     &#039;revisions&#039;,

&#039;comments&#039;,
&#039;trackbacks&#039;)
                )
        );
	register_taxonomy( &#039;newscat&#039;, &#039;news&#039;, array( &#039;hierarchical&#039; =&gt; true, &#039;label&#039; =&gt; __(&#039;Category&#039;) ) );
}
add_action(&#039;init&#039;, &#039;post_type_news&#039;);</pre>
<p>Теперь нужно перейти в адмнке на страницу <em>Параметры→Постоянные ссылки</em> и <strong>пересохранить настройки ЧПУ.</strong> После этого, если вы всё правильно сделали, должны измениться адреса материалов в дополнительном типе записей.</p>
<p>Для наглядности, посмотрите, как они отображаются у меня, в левом сайдбаре.</p>
<p>Вот и вся хитрость. Главное было правильно сформировать запрос в Гугле =)</p>
<p><strong>Надеюсь, у вас не возникнут трудности в применении данного решения. А если возникнут&nbsp;&mdash; как всегда жду ваши вопросы в комментариях.</strong></p>
<p><strong>Что вообще думаете о подобной &laquo;защите&raquo; разделов со ссылками? Эффективно ли или всё равно рано или поздно накроет, если сильно обнаглеть?</strong></p>
<p>Желаю вам всего самого доброго!<br />
<a href="http://seogad.ru">Артём Савельев</a></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/wordpress-news-sidebar" rel="bookmark">Wordpress&nbsp;&mdash; делаем раздел новостей и выводим из него анонсы в сайдбар</a><!-- (8.8)--></li>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (7.9)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (7.1)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/custom-permalinks-in-custom-post-types/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Wordpress&#160;&#8212; делаем раздел новостей и выводим из него анонсы в сайдбар</title>
		<link>http://seogad.ru/cms/wordpress-news-sidebar</link>
		<comments>http://seogad.ru/cms/wordpress-news-sidebar#comments</comments>
		<pubDate>Sat, 13 Nov 2010 11:44:35 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=3858</guid>
		<description><![CDATA[Недавно я начал монетизировать блог с помощью продажи постовых в специально для этого предназначенном разделе &#171;Новости&#187;. Для него используется отдельный тип записей. Сегодня я расскажу вам о том, как такой раздел создать и как вывести анонсы последних новостей в сайдбар. Для этого нам потребуется отредактировать пару файлов шаблона. Начнём с functions.php&#160;&#8212; добавим туда новую функцию: [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/custom-permalinks-in-custom-post-types" rel="bookmark">Изменение структуры ЧПУ в дополнительном типе записей Wordpress</a><!-- (9.7)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (6.7)--></li>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (6)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Недавно я начал <a href="http://seogad.ru/moneymaking/news-gogetlinks">монетизировать блог с помощью продажи постовых</a> в специально для этого предназначенном разделе &laquo;Новости&raquo;. Для него используется <strong>отдельный тип записей.</strong></p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/11/main4.jpg" alt="" title="Wordpress - делаем раздел новостей и выводим из него анонсы в сайдбар" width="470" height="313" class="aligncenter size-full wp-image-3901" /></p>
<p>Сегодня я расскажу вам о том, как такой раздел создать и <strong>как вывести анонсы последних новостей в сайдбар.</strong><span id="more-3858"></span></p>
<p>Для этого нам потребуется отредактировать пару файлов шаблона. Начнём с <em>functions.php</em>&nbsp;&mdash; добавим туда новую функцию:</p>
<p><code>function post_type_news() { register_post_type( 'news',  array( 'label' =&gt; __('Новости'), 'public' =&gt; true, 'show_ui' =&gt; true, 'publicly_queryable' =&gt; true, 'supports' =&gt; array( 'title', 'editor', 'excerpts', 'custom-fields', 'revisions', 'comments', 'trackbacks') ) ); register_taxonomy( 'newscat', 'news', array( 'hierarchical' =&gt; true, 'label' =&gt; __('Рубрика') ) ); } add_action('init', 'post_type_news');</code></p>
<p>Чистим кэш, если установлен плагин кэширования, и заходим в админку&nbsp;&mdash; там должен появиться новый раздел меню под названием &laquo;Новости&raquo;.</p>
<p>Переходим на страницу <em>Новости→Рубрики</em> и добавляем новую рубрику с одноимённым типу записей названием. В качестве ярлыка я указал &laquo;news&raquo;:</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/11/newcat.jpg" alt="" title="Добавление новой рубрики в дополнительном типе записей" width="470" height="570" class="aligncenter size-full wp-image-3868" /></p>
<p>Отныне наши новости будут доступны по адресу <a href="/newscat/news">/newscat/news</a>, <em>newscat</em>&nbsp;&mdash; это ярлык таксономии, который я указал в коде при добавлении типа записей, <em>news</em>&nbsp;&mdash; это ярлык рубрики новостей.</p>
<p>Теперь можем добавить пару новостей и приступить к их выводу в левом сайдбаре. В левом&nbsp;&mdash; потому что в коде он находится ближе к началу страницы, а это хорошо для индексации.</p>
<p>Снова залезем в <em>functions.php</em> и где-нибудь до функции <em>register_my_widget ()</em> добавим следующий код:</p>
<p><code>function getlastnews() { $lastnews = new WP_Query('post_type=news&#038;showposts=15&#038;orderby=date'); ?&gt;<br />
&lt;li&gt;<br />
&lt;h4&gt;Новости&lt;/h4&gt;<br />
&lt;div class="textwidget"&gt;&lt;?php while ($lastnews-&gt;have_posts()) : $lastnews-&gt;the_post(); ?&gt;<br />
&lt;div class="news_widget_item"&gt;<br />
&lt;div class="news_date"&gt;&lt;?php the_time(__('l, j F Y')) ?&gt;&lt;/div&gt;<br />
&lt;p&gt;&lt;a href="&lt;?php the_permalink() ?&gt;" class="news_widget_title"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/div&gt;<br />
&lt;p&gt;&lt;?php endwhile; ?&gt;&lt;a href="&lt;?php bloginfo('home'); ?&gt;/newscat/news" class="sendlink"&gt;Другие новости&lt;/a&gt;&lt;/div&gt;<br />
&lt;/li&gt;<br />
&lt;p&gt;&lt;?php };</code></p>
<p>Я использовал собственную разметку для элемента сайдбара, в вашей теме она может отличаться, поэтому уточните, как это дело формируется у вас. Как вариант&nbsp;&mdash; можно найти это в режиме просмотра исходного кода в браузере.</p>
<p><strong>Если вы не используете для новостей отдельный тип записей,</strong> то вам понадобится заменить <em>post_type=news</em> на <em>cat=ID</em>, где ID&nbsp;&mdash; это цифровой идентификатор категории, посты из которой вы хотите вывести в сайдбар.</p>
<p>Параметр showposts=15 говорит о том, что будут выводиться 15 элементов.</p>
<p>Теперь добавим в функцию <em>register_my_widget ()</em> строку:</p>
<p><code>register_sidebar_widget('Новости', 'getlastnews');</code></p>
<p>Если такой функции нет, то создадим её следующим образом:</p>
<p><code>function register_my_widget() { register_sidebar_widget('Новости', 'getlastnews'); } add_action('init', 'register_my_widget');</code></p>
<p>Конечно же, нужно всю эту штуку закрасивить. Кому интересно&nbsp;&mdash; вот параметры стилей, которые я использовал в своей теме:</p>
<p><code>.news_date { font-size:11px; color:#333333; margin-bottom:5px; display:block; font-weight:bold; font-style:italic; } .news_widget_image img { display:block; border:1px solid #8DAEE0; padding:2px; background-color:#FFF; margin-bottom:5px; } .news_widget_image:hover img { border:1px solid #8DAEE0; } .news_widget_title { display:block; font-size:12px; text-decoration:underline; color:#3167B7; } .news_widget_title:hover { text-decoration:none; color:#3167B7; } .news_widget_item { display:block; margin-bottom:15px; }</code></p>
<p>Можете сравнить этот код с кодом виджета и сопоставить названия классов с теми элементами, к которым они применяются, чтобы лучше понять ситуацию.</p>
<p>Добавлять стили следует в файл <em>style.css</em>.</p>
<p>Теперь останется лишь добавить виджет в нужное место. Для этого перейдём на страницу <em>Внешний вид→Виджеты</em> и перетащим наши &laquo;Новости&raquo; в нужный сайдбар:</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/11/widget.jpg" alt="" title="Виджет с последними записями из рубрики новостей" width="326" height="319" class="aligncenter size-full wp-image-3882" /></p>
<p>Вот и всё. Результат вы можете увидеть на этом блоге, слева.</p>
<p><strong>Надеюсь, у вас не возникнет проблем, а если возникнут&nbsp;&mdash; не стесняйтесь и добро пожаловать в комментарии, будем вместе разбирать ваши примеры!</strong></p>
<p>Желаю вам хорошего настроения!<br />
<a href="http://seogad.ru">Артём Савельев</a></p>
<p><em> P.S. Подскажите, по возможности, какие инструменты вы используете для ускорения индексации новых страниц в Яндексе.</em></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/custom-permalinks-in-custom-post-types" rel="bookmark">Изменение структуры ЧПУ в дополнительном типе записей Wordpress</a><!-- (9.7)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (6.7)--></li>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (6)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/wordpress-news-sidebar/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Используем условные теги Wordpress</title>
		<link>http://seogad.ru/cms/wp-conditional-tags</link>
		<comments>http://seogad.ru/cms/wp-conditional-tags#comments</comments>
		<pubDate>Sat, 06 Nov 2010 20:15:55 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=3507</guid>
		<description><![CDATA[Иногда бывает так, что необходимо вставить в шаблоне некоторые элементы только на определённые страницы блога. Если речь идёт о Wordpress, то для этого отлично подойдут так называемые условные теги (Conditional Tags). Сегодня хотелось бы рассмотреть некоторые из них на реальных примерах. Если же вы не найдёте здесь то, что искали, смело спрашивайте в комментариях, но [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/design/using-php-date-function" rel="bookmark">Используем функцию php date ()</a><!-- (6.8)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Иногда бывает так, что необходимо вставить в шаблоне некоторые элементы только на определённые страницы блога. Если речь идёт о Wordpress, то для этого отлично подойдут так называемые условные теги (Conditional Tags).</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/11/wp-cond-tags.jpg" alt="" title="Используем условные теги Wordpress" width="470" height="313" class="aligncenter size-full wp-image-3534" /></p>
<p>Сегодня хотелось бы рассмотреть некоторые из них на реальных примерах. Если же вы не найдёте здесь то, что искали, смело спрашивайте в комментариях, но в принципе использование всех тегов очень похоже.<span id="more-3507"></span></p>
<p>Начнём, пожалуй, с самого часто используемого мной тега. Попробуйте зайти на <a href="http://seogad.ru">главную страницу блога</a> и нажать на импровизированный логотип&nbsp;&mdash; это вас никуда не приведёт, но если перейти на любую другую страницу&nbsp;&mdash; в том месте будет ссылка на главную.</p>
<p>Это достигается с помощью условного тега <em>is_home ()</em>, благодаря которому можно определить, открыта ли главная страница или нет, и выстроить соответствующим образом необходимое условие.</p>
<p>Чтобы сделать ссылку везде, кроме главной, я вставил в свой шаблон следующий код:</p>
<p><code>&lt;?php if (!is_home()) { ?&gt;&lt;a href="&lt;?php echo get_option('home'); ?&gt;/"&gt;&lt;/a&gt;&lt;?php }; ?&gt;</code></p>
<p>Восклицательный знак указывает на то, что содержимое условия будет показано только тогда, когда будет просматриваться не главная страница.</p>
<p>Можно также сделать условие с разными вариантами. Для главной страницы покажем, например, текст &laquo;Это главная страница&raquo;, а для остальных&nbsp;&mdash; &laquo;Это внутренняя страница&raquo;. Выглядеть это будет так:</p>
<p><code>&lt;?php if (is_home()) { ?&gt;Это главная страница&lt;?php } else {?&gt;Это внутренняя страница&lt;?php }; ?&gt;</code></p>
<p>Чтобы попробовать ещё что-нибудь, давайте усложним задачу и разобьём наше всеобъемлющее else на что-нибудь более конкретное, например на страницы категорий, посты и просто страницы.</p>
<p><code>&lt;?php if (is_home()) { ?&gt;Это главная страница&lt;?php } elseif (is_category()) {?&gt;Это какая-нибудь категория&lt;?php } elseif (is_single()) {?&gt;Это пост&lt;?php } elseif (is_page()) {?&gt;Это обычная страница&lt;?php } else {?&gt;Это всё остальное&lt;?php }; ?&gt;</code></p>
<p>Можно ещё при желании вставить в условие id категории или записи, например:</p>
<p><code>&lt;?php if (is_category('5')) {?&gt;Это одна категория с id=5&lt;?php }; ?&gt;</code></p>
<p>А если нам нужно включить в условие несколько элементов, то это будет выглядеть примерно следующим образом:</p>
<p><code>&lt;?php if (is_single(array(5,6,9))) {?&gt;Это пост с id=5, 6 или 9&lt;?php }; ?&gt;</code></p>
<p>Как видите, всё это не сложно. С помощью подобных тегов можно решить немало задач, главное знать, что именно хочешь и выстроить правильную логику.</p>
<p>О том, как ещё с этим делом можно извратиться предлагаю почитать <a href="http://codex.wordpress.org/Conditional_Tags">здесь</a>&nbsp;&mdash; это часть официальной документации по Wordpress, где представлены условные теги.</p>
<p><strong>Выбирайте, пробуйте&nbsp;&mdash; уверен, у вас всё получится! А если что-то пойдёт не так, задавайте вопросы&nbsp;&mdash; вместе разберём вашу ситуацию.</strong></p>
<p>Желаю вам всего самого безошибочного!<br />
<a href="http://seogad.ru">Артём Савельев</a></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/design/using-php-date-function" rel="bookmark">Используем функцию php date ()</a><!-- (6.8)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/wp-conditional-tags/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Блог под ключ за 999 рублей</title>
		<link>http://seogad.ru/cms/blog-for-999</link>
		<comments>http://seogad.ru/cms/blog-for-999#comments</comments>
		<pubDate>Tue, 10 Aug 2010 01:17:53 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[акции]]></category>
		<category><![CDATA[блоги]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=2799</guid>
		<description><![CDATA[Хотелось организовать на этом блоге услугу, которая и стоила бы недорого, и спросом пользовалась. Оценив ситуацию, я понял, что на данный момент лучше и быстрее всего у меня получается создавать блоги на Wordpress, поэтому встречайте новое недорогое удовольствие — &#171;Блог под ключ за 999 рублей&#187;. Удовольствие это избавит вас от хлопот по запуску нового блога&#160;&#8212; [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/blogs/blog-alternativnaya-pensiya" rel="bookmark">Блог&nbsp;&mdash; альтернативная пенсия</a><!-- (5.1)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Хотелось организовать на этом блоге услугу, которая и стоила бы недорого, и спросом пользовалась. Оценив ситуацию, я понял, что на данный момент лучше и быстрее всего у меня получается создавать блоги на Wordpress, поэтому встречайте новое недорогое удовольствие —<strong> &laquo;Блог под ключ за 999 рублей&raquo;.</strong></p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/08/blog-999.jpg" alt="Создание блога на Wordpress за 999 рублей и 3 дня" title="Блог за 999 рублей" width="470" height="312" class="aligncenter size-full wp-image-2808" /></p>
<p>Удовольствие это избавит вас от хлопот по запуску нового блога&nbsp;&mdash; <strong>в течение 3-х дней</strong> после оплаты вы получите доступ к панели администратора и сможете вступить на путь покорения блогосферы с новым блогом. </p>
<p>Замечу, что данный пост является лишь анонсом услуги, которая полностью представлена на специальной странице &laquo;<a href="http://seogad.ru/wordpress-blog">Создание блога под ключ за 999 рублей</a>&raquo;. Также в связи с этим событием в блоге стартует новая акция, о которой вы узнаете дальше.<span id="more-2799"></span></p>
<p>Итак, <strong>за 999 рублей и в течение 3-х дней</strong> вам достанется следующее:</p>
<ul>
<li>Регистрация домена в зоне .ru;</li>
<li>Помощь в выборе хостинга;</li>
<li>Установка и настройка последней версии Wordpress;</li>
<li>Установка и настройка плагинов;</li>
<li>Установка и уникализация выбранной Вами темы оформления;</li>
<li>Регулярные уведомления об обновлениях.</li>
<li>Анонс блога на seogad.ru</li>
</ul>
<p>Здесь я постарался максимально кратко указать перечень входящих в стоимость мероприятий, подробнее вы можете ознакомиться на <a href="http://seogad.ru/wordpress-blog">странице с описанием услуги</a>.</p>
<p>Хочется отметить, что для данного блога это очень большое событие. Раньше он лишь косвенно рассказывал о моих услугах, что в принципе не помешало нескольким клиентам обратиться ко мне за разработкой сайтов (стоимость которых далеко не 999 рублей).</p>
<p>Теперь же у него есть прямая задача&nbsp;&mdash; приносить мне как можно больше заказов услуги &laquo;Блог под ключ за 999 рублей&raquo;.</p>
<p>Надеюсь, он неплохо будет справляться с этой задачей, а чтобы помочь ему, давайте устроим небольшую акцию со взаимовыгодным размещением постовых.</p>
<h3>Условия акции</h3>
<p>Необходимо разместить у себя в блоге постовой с одним из следующих текстов ссылок:</p>
<ul>
<li>блог wordpress</li>
<li>блог на wordpress</li>
<li>создание блога</li>
<li>создать блог</li>
</ul>
<p>Сослаться нужно на страницу с услугой:</p>
<p><a href="http://seogad.ru/wordpress-blog">http://seogad.ru/wordpress-blog</a></p>
<p>Расплатиться я готов следующим образом:</p>
<ul>
<li>1 постовой, если тИЦ блога 0</li>
<li>2 постовых, если тИЦ блога от 10 и больше</li>
</ul>
<p>Постовые готов разместить не только на блог, где красуется моя ссылка, но и на другие ваши блоги, главное чтобы они были качественные и по возможности схожи по тематике с моим.</p>
<p>Если вы продвигаете клиентские сайты, могу сослаться на них, а не на ваши блоги.</p>
<p>О размещённых постовых сообщайте в комментариях к этой записи, по электронной почте (artsav@artsav.com) либо через <a href="http://seogad.ru/chief/feedback">форму обратной связи</a>.</p>
<p>Буду признателен за поддержку акции. Приглашаю активно пользоваться новой услугой.</p>
<p>Желаю вам всего самого интересного.<br />
<a href="http://seogad.ru">Артём Савельев</a>.</p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/blogs/blog-alternativnaya-pensiya" rel="bookmark">Блог&nbsp;&mdash; альтернативная пенсия</a><!-- (5.1)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/blog-for-999/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Анонимные комментарии в Wordpress а-ля blogger.com</title>
		<link>http://seogad.ru/cms/wp-blogger-commments</link>
		<comments>http://seogad.ru/cms/wp-blogger-commments#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:31:41 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[комментарии]]></category>
		<category><![CDATA[уроки]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=2512</guid>
		<description><![CDATA[Недавно я работал над одним интересным сайтом на Wordpress, хозяин которого попросил сделать достаточно оригинальную штуку: анонимные комментаторы должны иметь возможность ввести только текст комментария, а имя и адрес сайта доступны лишь зарегистрированным пользователям. Начал было рассказывать о своей беде товарищу в скайпе, но вдруг понял, что всё не так сложно, как почудилось. На самом [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/comment-modification" rel="bookmark">Украшаем комментарии в Wordpress</a><!-- (12.4)--></li>
		<li><a href="http://seogad.ru/cms/thememylogin" rel="bookmark">Подключение темы Wordpress к страницам профиля, регистрации и авторизации</a><!-- (8.9)--></li>
		<li><a href="http://seogad.ru/cms/magicfields-photosite" rel="bookmark">Создание фотосайта на Wordpress с помощью плагина Magic Fields</a><!-- (7)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p>Недавно я работал над одним интересным сайтом на Wordpress, хозяин которого попросил сделать достаточно оригинальную штуку: анонимные комментаторы должны иметь возможность ввести только текст комментария, а имя и адрес сайта доступны лишь зарегистрированным пользователям.</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/06/anonymous-comments-main.jpg" alt="Делаем очень анонимные комментарии на Wordpress" title="Очень анонимные комментарии в Wordpress (а-ля blogger.com)" width="470" height="312" class="aligncenter size-full wp-image-2531" /></p>
<p>Начал было рассказывать о своей беде товарищу в скайпе, но вдруг понял, что всё не так сложно, как почудилось.<span id="more-2512"></span></p>
<p>На самом деле достаточно сделать всего пару изменений в одном из файлов шаблона. Откроем <em>comments.php</em> и найдём примерно следующее (примерно, потому что в разных темах по-разному, мой вариант взят из темы Classic):</p>
<p><code>&lt;br /&gt;<br />
&lt;input type="text" name="author" id="author" value="&lt;?php echo esc_attr($comment_author); ?&gt;" size="22" tabindex="1" /&gt;&lt;br /&gt;<br />
&lt;label for="author"&gt;&lt;small&gt;&lt;?php _e('Name'); ?&gt; &lt;?php if ($req) _e('(required)'); ?&gt;&lt;/small&gt;&lt;/label&gt;&lt;/p&gt;<br />
&lt;p&gt;</code></p>
<p>Удалим отсюда теги <strong>label</strong> и всё, что между ними, уберём оба тега <strong>p</strong>, значение <strong>value</strong> заменим на <em><strong>Анонимный комментарий</strong></em>, а значение <strong>type</strong>&nbsp;&mdash; на <em><strong>hidden</strong></em>.</p>
<p>В результате получим следующий код:</p>
<p><code>&lt;br /&gt;<br />
&lt;input type="hidden" name="author" id="author" value="Анонимный комментарий" size="22" tabindex="1" /&gt;</code></p>
<p>Сделаем похожие изменения в поле для ввода <strong>E-mail</strong>, заменим</p>
<p><code>&lt;br /&gt;<br />
&lt;input type="text" name="email" id="email" value="&lt;?php echo esc_attr($comment_author_email); ?&gt;" size="22" tabindex="2" /&gt;&lt;br /&gt;<br />
&lt;label for="email"&gt;&lt;small&gt;&lt;?php _e('Mail (will not be published)');?&gt; &lt;?php if ($req) _e('(required)'); ?&gt;&lt;/small&gt;&lt;/label&gt;&lt;/p&gt;<br />
&lt;p&gt;</code></p>
<p>на этот код:</p>
<p><code>&lt;br /&gt;<br />
&lt;input type="hidden" name="email" id="email" value="noreplay@site.com" size="22" tabindex="2" /&gt;</code></p>
<p>Поле для ввода <strong>адреса сайта</strong> можем смело удалить, вот каким оно было:</p>
<p><code>&lt;br /&gt;<br />
&lt;input type="text" name="url" id="url" value="&lt;?php echo esc_attr($comment_author_url); ?&gt;" size="22" tabindex="3" /&gt;&lt;br /&gt;<br />
&lt;label for="url"&gt;&lt;small&gt;&lt;?php _e('Website'); ?&gt;&lt;/small&gt;&lt;/label&gt;&lt;/p&gt;<br />
&lt;p&gt;</code></p>
<p>Проверяем результат.</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/06/anonymous-comments.jpg" alt="Анонимные комментарии в Wordpress по типу blogger.com" title="Анонимные комментарии в Wordpress" width="470" height="260" class="aligncenter size-full wp-image-2518" /></p>
<p>Вот такое нехитрое решение оригинальной проблемы. </p>
<p>Для того, чтобы задизайнить в стиле сайта страницы регистрации, авторизации, настройки профиля и напоминания пароля, я использовал плагин <a href="http://wordpress.org/extend/plugins/theme-my-login/">Theme my Login</a>, о котором писал в уроке &laquo;<a href="http://seogad.ru/cms/thememylogin">Подключение темы Wordpress к страницам профиля, регистрации и авторизации</a>&raquo; (с тех пор настройки плагина немножко поменялись, имейте в виду).</p>
<p>Желаю вам всего самого оригинального.<br />
<a href="http://seogad.ru">Артём Савельев</a></p>
<p><em>P.S. Скоро подходит к концу мой марафон. Будем отчитываться =)</em></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/comment-modification" rel="bookmark">Украшаем комментарии в Wordpress</a><!-- (12.4)--></li>
		<li><a href="http://seogad.ru/cms/thememylogin" rel="bookmark">Подключение темы Wordpress к страницам профиля, регистрации и авторизации</a><!-- (8.9)--></li>
		<li><a href="http://seogad.ru/cms/magicfields-photosite" rel="bookmark">Создание фотосайта на Wordpress с помощью плагина Magic Fields</a><!-- (7)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/wp-blogger-commments/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Создаём каталог организаций на Wordpress без использования плагинов</title>
		<link>http://seogad.ru/cms/catalog-wordpress</link>
		<comments>http://seogad.ru/cms/catalog-wordpress#comments</comments>
		<pubDate>Mon, 29 Mar 2010 15:35:49 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[60000/мес. за 100 дней]]></category>
		<category><![CDATA[каталог]]></category>
		<category><![CDATA[марафон]]></category>
		<category><![CDATA[уроки]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=1802</guid>
		<description><![CDATA[Пока я выпиливаю свои шаблоны, хотелось бы поделиться с вами какой-нибудь полезностью. Например, в ходе марафона я выучился создавать на Wordpress разнообразные каталоги, в том числе и каталог организаций, без использования плагинов. Для этого я использую третью ветку Wordpress, функции таксономии и дополнительные типы записей. Весь процесс я буду показывать на тестовом сайте, предназначенном для [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (14.1)--></li>
		<li><a href="http://seogad.ru/cms/60000-themes" rel="bookmark">Марафон продолжается: создаём качественные и функциональные шаблоны для Wordpress</a><!-- (11.4)--></li>
		<li><a href="http://seogad.ru/cms/custom-permalinks-in-custom-post-types" rel="bookmark">Изменение структуры ЧПУ в дополнительном типе записей Wordpress</a><!-- (9.4)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/03/marafon-catalog.jpg" alt="Создание каталога организаций на Wordpress 3.0  без плагинов" title="Создаём каталог организаций на Wordpress без использования плагинов" width="470" height="312" class="alignnone size-full wp-image-1870" /></p>
<p>Пока я выпиливаю свои шаблоны, хотелось бы поделиться с вами какой-нибудь полезностью. Например, в ходе марафона я выучился создавать на Wordpress разнообразные каталоги, в том числе и каталог организаций, без использования плагинов.<span id="more-1802"></span></p>
<p>Для этого я  использую третью ветку Wordpress, функции <strong>таксономии</strong> и дополнительные <strong>типы записей</strong>. Весь процесс я буду показывать на <a href="http://wp3.wptest.ru/">тестовом сайте</a>, предназначенном для тестирования возможностей Wordpress 3.</p>
<p>Чтобы осуществить задуманное, нам понадобиться открыть файл <em>functions.php</em> используемой темы и вставить перед последним закрывающим тегом <em>?&gt;</em> всё, что мы сейчас напридумываем.</p>
<h3>Типы записей и дополнительные рубрики</h3>
<p>Положим начало функции, которая будет содержать новый тип записей и его собственные рубрики:</p>
<p><code>function post_type_myfirms() {</code></p>
<p>При желании, замените <em>myfirms</em> на что-нибудь своё. </p>
<p>В эту функцию добавим новый тип записей:</p>
<p><code>&lt;br /&gt;<br />
register_post_type('firms',&lt;br /&gt;<br />
array(&lt;br /&gt;<br />
'label' =&gt; __('Организации'),&lt;br /&gt;<br />
'public' =&gt; true,&lt;br /&gt;<br />
'show_ui' =&gt; true,&lt;br /&gt;<br />
'publicly_queryable' =&gt; true,&lt;br /&gt;<br />
'supports' =&gt; array(&lt;br /&gt;<br />
'title',&lt;br /&gt;<br />
'editor',&lt;br /&gt;<br />
'post-thumbnails',&lt;br /&gt;<br />
'excerpts',&lt;br /&gt;<br />
'custom-fields',&lt;br /&gt;<br />
'revisions'&lt;br /&gt;<br />
)&lt;br /&gt;<br />
)&lt;br /&gt;<br />
);</code></p>
<p>Мы указали лишь некоторые параметры, объясню их вместе с теми, которые мы не здесь затронули.</p>
<ul>
<li><strong>label</strong> – описание типа записей, можно указывать на своём языке;</li>
<li><strong>public</strong> – отображать ли этот тип записи в админке, по умолчанию указано значение <em>false</em>;</li>
<li><strong>exclude_from_search</strong> – исключать ли посты этого типа из поиска, по умолчанию <em>false</em>, если параметр <em>public</em> имеет значение <em>true</em>;</li>
<li><strong>publicly_queryable</strong> – позволять ли отображать посты этого типа на главной странице;</li>
<li><strong>show_ui</strong> – отображать ли стандартный интерфейс для редактирования записей этого типа, по умолчанию <em>true</em>, если параметр <em>public</em> имеет значение <em>true</em>;</li>
<li><strong>inherit_type</strong> – тип записи для наследования возможностей и ссылки на редактирование;</li>
<li><strong>capability_type</strong> – тип записи, по примеру которого следует подключить возможности чтения, редактирования и удаления записей, по умолчанию это «post»;</li>
<li><strong>edit_cap</strong> – управляет редактированием записей данного типа, по умолчанию «edit_$capability_type» (edit_post);</li>
<li><strong>edit_type_cap</strong> – управляет редактированием записей данного типа как класса, по умолчанию «edit_ . $capability_type . s» (edit_posts);</li>
<li><strong>edit_others_cap</strong> – управляет редактированием записей данного типа, созданных другими пользователями, по умолчанию «edit_others_ . $capability_type . s» (edit_others_posts);</li>
<li><strong>edit_others_cap</strong> – управляет публикацией записей данного типа, по умолчанию «publish_ . $capability_type . s» (publish_posts);</li>
<li><strong>read_cap</strong> – управляет чтением записей данного типа, по умолчанию «read_$capability_type» (read_post);</li>
<li><strong>delete_cap</strong> – управляет удалением записей данного типа, по умолчанию «delete_$capability_type» (delete_post);</li>
<li><strong>hierarchical</strong> – включает возможность иерархии постов, по умолчанию установлено значение <em>false</em>;</li>
<li><strong>supports</strong> – подключение элементов записи к странице редактирования, возможны следующие варианты:</li>
<ul>
<li>title&nbsp;&mdash; заголовок записи;</li>
<li>editor (content)&nbsp;&mdash; содержание;</li>
<li>author&nbsp;&mdash; автор записи;</li>
<li>thumbnail&nbsp;&mdash; миниатюра;</li>
<li>excerpts&nbsp;&mdash; краткий анонс;</li>
<li>trackbacks&nbsp;&mdash; уведомления об обратных ссылках;</li>
<li>custom-fields&nbsp;&mdash; дополнительные поля;</li>
<li>comments&nbsp;&mdash; комментарии;</li>
<li>revisions&nbsp;&mdash; ревизии;</li>
</ul>
<li><strong>register_meta_box_cb</strong> – функция, вызываемая при установке полей записи. Используйте remove_meta_box () и add_meta_box () внутри этой функции;</li>
<li><strong>taxonomies</strong> –  список дополнительных рубрик, зарегистрированных для данного типа записей, по умолчанию не используется, можно добавить поддержку отдельно с помощью функции register_taxonomy () или register_taxonomy_for_object_type ().</li>
</ul>
<p>Более подробно обо всё об этом <a href="http://codex.wordpress.org/Function_Reference/register_post_type" rel="nofollow">здесь</a> (по-английски).</p>
<p>Теперь подключим таксономию (дополнительные рубрики и метки). Для этого после того кода, который мы уже вставили, зарегистрируем категории:</p>
<p><code>register_taxonomy( 'firmcat', 'firms', array( 'hierarchical' =&gt; true, 'label' =&gt; __('Категории') ) );</code></p>
<p>и после зарегистрируем города (в формате меток):</p>
<p><code>register_taxonomy( 'city', 'firms',&lt;br /&gt;<br />
array(&lt;br /&gt;<br />
'hierarchical' =&gt; false,&lt;br /&gt;<br />
'label' =&gt; __('Города'),&lt;br /&gt;<br />
'query_var' =&gt; 'city',&lt;br /&gt;<br />
'rewrite' =&gt; array('slug' =&gt; 'city' )&lt;br /&gt;<br />
)&lt;br /&gt;<br />
);</code></p>
<p>Подробнее читайте по-английски <a href="http://codex.wordpress.org/Function_Reference/register_taxonomy" rel="nofollow">здесь</a>.</p>
<p>Закроем функцию:</p>
<p><code>}</code></p>
<p>и активируем всё, что мы насочиняли:</p>
<p><code>add_action('init', 'post_type_myfirms');</code></p>
<p>Если ранее вы заменили <em>myfirms</em> на что-нибудь другое, сделайте это и здесь.</p>
<h3>Шаблоны для каталога</h3>
<p>Чтобы отделить наши записи от остальных материалов блога, нам понадобиться создать для них собственные шаблоны. Начнём со страницы, содержащей список рубрик, для этого откроем файл <em>page.php</em> и после:</p>
<p><code>&lt;?php the_content(); ?&gt;</code></p>
<p>добавим:</p>
<p><code>&lt;?php if (is_page('firms')) { ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;strong&gt;Рубрики&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php wp_tag_cloud( array( 'taxonomy'=&gt;'firmcat' , 'number'=&gt;'0' ) ); ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;strong&gt;Города&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php wp_tag_cloud( array( 'taxonomy'=&gt;'city' , 'number'=&gt;'0' ) ); ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php }; ?&gt;</code></p>
<p>Тем самым мы отобразим списки рубрик и городов в формате облака меток. Подробнее читайте в описании функции <a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud" rel="nofollow">wp_tag_cloud</a>.</p>
<p>Теперь создадим новую страницу с <em>постоянной ссылкой</em> &laquo;firms&raquo;.</p>
<p>Добавим пару тестовых организаций, для этого перейдём в <em>Организации → Добавить новую</em>. Там же создадим пару категорий и добавим города.</p>
<p>Смотрим, <a href="http://wp3.wptest.ru/firms/" rel="nofollow">что у нас получилось</a>:</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/03/catalog1.jpg" alt="Рубрики каталога организаций на Wordpress" title="Каталог организаций на Wordpress" width="470" height="190" class="alignnone size-full wp-image-1849" /></p>
<p>Теперь создадим шаблон для категорий и городов. Начнём с последнего, для этого откроем любой предусмотренный в теме файл категории или просто <em>index.php</em> и сохраним его как <em>taxonomy-city.php</em>.</p>
<p>В созданном файле добавим отображение рубрики, в котором располагается организация, перед:</p>
<p><code>&lt;?php the_content() ?&gt;</code></p>
<p>вставим:</p>
<p><code>&lt;?php echo get_the_term_list( $post-&gt;ID, 'firmcat', '<br />
&lt;p&gt;Рубрика: ', ', ', '&lt;/p&gt;<br />
&lt;p&gt;' ); ?&gt;</code></p>
<p>а чтобы добавить заголовок страницы с названием города, после:</p>
<p><code>&lt;?php if (have_posts()) : ?&gt;</code></p>
<p>вставим:</p>
<p><code>&lt;br /&gt;<br />
&lt;h2&gt;Организации в городе "&lt;?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term-&gt;name; ?&gt;"&lt;/h2&gt;<br />
&lt;p&gt;</code></p>
<p>Теперь сохраним этот файл как <em>taxonomy-firmcat.php</em> и заменим код для отображения рубрики на отображение города:</p>
<p><code>&lt;?php echo get_the_term_list( $post-&gt;ID, 'city', '<br />
&lt;p&gt;Город: ', ', ', '&lt;/p&gt;<br />
&lt;p&gt;' ); ?&gt;</code></p>
<p>а код заголовка заменим, например, на следующий:</p>
<p><code>&lt;br /&gt;<br />
&lt;h2&gt;&lt;?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term-&gt;name; ?&gt;&lt;/h2&gt;<br />
&lt;p&gt;</code></p>
<p>Создадим также шаблон для одиночной записи. Для этого сохраним файл <em>single.php</em> как <em>single-firms.php</em> и добавим в нём перед:</p>
<p><code>&lt;?php the_content(); ?&gt;</code></p>
<p>как рубрику:</p>
<p><code>&lt;?php echo get_the_term_list( $post-&gt;ID, 'firmcat', '<br />
&lt;p&gt;Рубрика: ', ', ', '&lt;/p&gt;<br />
&lt;p&gt;' ); ?&gt;</code></p>
<p>так и город:</p>
<p><code>&lt;?php echo get_the_term_list( $post-&gt;ID, 'city', '<br />
&lt;p&gt;Город: ', ', ', '&lt;/p&gt;<br />
&lt;p&gt;' ); ?&gt;</code></p>
<p>Проверяем <a href="http://wp3.wptest.ru/firms/upravlenie-zags-administracii-g-lipecka/">результат</a>:</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/03/catalog2.jpg" alt="Одиночная запись каталога организаций на Wordpress" title="Каталог организаций на Wordpress - одиночная записи" width="470" height="152" class="alignnone size-full wp-image-1857" /></p>
<h3>Виджет</h3>
<p>В принципе, каталог у нас готов, но я бы ещё добавил один симпатичный виджет со списком всех категорий и городов. Снова откроем файл <em>functions.php</em> и перед последним закрывающим тегом <em>?></em> добавим:</p>
<p><code>function firmcats() {&lt;br /&gt;<br />
?&gt;&lt;/p&gt;<br />
&lt;li&gt;<br />
&lt;h3&gt;Организации&lt;/h3&gt;<br />
&lt;p&gt;&lt;strong&gt;Рубрики:&lt;/strong&gt;&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;?php wp_tag_cloud( array( 'taxonomy'=&gt;'firmcat' , 'smallest'  =&gt; 12,&lt;br /&gt;<br />
    'largest'   =&gt; 12,&lt;br /&gt;<br />
    'unit'      =&gt; 'px', 'format'=&gt;'list' ) ); ?&gt;<br />
&lt;/ul&gt;<br />
&lt;p&gt;&lt;strong&gt;Города:&lt;/strong&gt;&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;?php wp_tag_cloud( array( 'taxonomy'=&gt;'city' , 'smallest'  =&gt; 12,&lt;br /&gt;<br />
    'largest'   =&gt; 12,&lt;br /&gt;<br />
    'unit'      =&gt; 'px', 'format'=&gt;'list' ) ); ?&gt;<br />
&lt;/ul&gt;<br />
&lt;/li&gt;<br />
&lt;p&gt;&lt;?php };&lt;br /&gt;<br />
function register_firm_widget() {&lt;br /&gt;<br />
register_sidebar_widget('Организации', 'firmcats');&lt;br /&gt;<br />
}&lt;br /&gt;<br />
add_action('init', 'register_firm_widget');&lt;br /&gt;</code></p>
<p>Получаем вот такую симпатяшку:</p>
<p><img src="http://seogad.ru/wp-content/uploads/2010/03/catalog3.jpg" alt="Рубрики и города каталога организаций в виджете Wordpress" title="Виджет каталога организаций на Wordpress" width="190" height="122" class="aligncenter size-full wp-image-1863" /></p>
<p>На этом всё. Наш каталог вы можете пощупать на <a href="http://wp3.wptest.ru/firms/" rel="nofollow">тестовом сайте</a>.</p>
<p>Как вы могли догадаться, Wordpress настолько чудесен, что мой сегодняшний урок лишь самая малая часть того, как можно извратиться при создании каталога организаций. </p>
<p>Можно самыми разными способами, в самых разных количествах и качествах отображать информацию, добавленную с помощью дополнительных типов записей и сортировать её с помощью дополнительных рубрик.</p>
<p>Желаю вам всего самого доброго и возвращаюсь к <a href="http://seogad.ru/tools/cms/60000-themes">разработке 40 тем для Wordpress</a> в рамках марафона &laquo;<a href="http://seogad.ru/moneymaking/60000-100days">60000 руб./месяц за 100 дней</a>&raquo;.</p>
<p><a href="http://seogad.ru">Артём Савельев</a>.<br />
<em><br />
P.S. Компания Universe of Web предлагает услуги по увеличению продаж с через Интернет, в том числе <a href="http://uniofweb.ru/">поисковую раскрутку сайтов</a> и контекстную рекламу.</em></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (14.1)--></li>
		<li><a href="http://seogad.ru/cms/60000-themes" rel="bookmark">Марафон продолжается: создаём качественные и функциональные шаблоны для Wordpress</a><!-- (11.4)--></li>
		<li><a href="http://seogad.ru/cms/custom-permalinks-in-custom-post-types" rel="bookmark">Изменение структуры ЧПУ в дополнительном типе записей Wordpress</a><!-- (9.4)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/catalog-wordpress/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Марафон продолжается: создаём качественные и функциональные шаблоны для Wordpress</title>
		<link>http://seogad.ru/cms/60000-themes</link>
		<comments>http://seogad.ru/cms/60000-themes#comments</comments>
		<pubDate>Wed, 24 Mar 2010 13:17:35 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[60000/мес. за 100 дней]]></category>
		<category><![CDATA[марафон]]></category>
		<category><![CDATA[шаблоны]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=1749</guid>
		<description><![CDATA[Одолела меня любовь к прекрасному, и пришлось отказаться от идеи сделать 40 шаблонов за 3-4 дня. Это реально, но бесплатные шаблоны оказались бы на порядок лучше и аккуратнее. Поэтому я решил подойти к делу основательно и создать 40 качественных тем для Wordpress. Три дня ушло только на создание уникальных шапок для всех сайтов, на шаблоны [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (10.1)--></li>
		<li><a href="http://seogad.ru/seo/60000-tic-start" rel="bookmark">Марафон продолжается: операция тИЦ</a><!-- (8.8)--></li>
		<li><a href="http://seogad.ru/different/hosting" rel="bookmark">Марафон продолжается: жилищный вопрос, переносим сайты на разные хостинги</a><!-- (8.3)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/03/marafon-continue1.jpg" alt="Разработка многофункциональных шаблонов для Wordpress" title="Cоздаём качественные и функциональные шаблоны для Wordpress" width="470" height="312" class="alignnone size-full wp-image-1795" /></p>
<p>Одолела меня любовь к прекрасному, и пришлось отказаться от идеи сделать 40 шаблонов за 3-4 дня. Это реально, но бесплатные шаблоны оказались бы на порядок лучше и аккуратнее. Поэтому я решил подойти к делу основательно и создать <strong>40 качественных тем для Wordpress.</strong> Три дня ушло только на <a href="http://seogad.ru/different/design/60000-days6-8">создание уникальных шапок</a> для всех сайтов, на шаблоны я отвожу две-три недели (по 2-3 шаблона в день). <span id="more-1749"></span></p>
<p>Я уже успел разработать пару шаблонов, на которые, впрочем, пришлось потратить несколько больше времени из-за всяких интересностей, создавать которые мне пришлось научиться. Чтобы вам не было скучно ждать завершения этого этапа, буду периодически рассказывать о том, что и как я со своими шаблонами вытворяю. Для начала краткий план действий, подробности буду публиковать отдельно.</p>
<p>Для начала я создал для наших тем <strong>40 папок на локальном компьютере</strong> и в каждую засунул папку <em>images</em>, содержащую шапку сайта. В дальнейшем для некоторых тем в эту папку добавится ещё пара-тройка картинок.</p>
<p>После чего я приступил непосредственно к разработке, имея под рукой распечатанный файл со <a href="http://seogad.ru/different/design/60000-days3-4">схемами расположения элементов в шаблонах</a>.</p>
<p>Важно, чтобы <strong>вёрстка</strong> во всех шаблонах отличалась. Важно придумать уникальные для каждого шаблона значения тегов <em>class</em>. Важно использовать разные стили в файле <em>style.css</em>. Важно не использовать элементы, которые могут дружно указать на одного единственного автора всех сайтов.</p>
<p>Также, на мой взгляд, не менее важно сделать <strong>различия между шаблонами записей</strong> в категориях, тегах и на главной странице. Например, в некоторых темах на главной странице я вывожу заголовок, дату, рубрики, метки и анонс материала, а в категориях и тегах только заголовок и дату. Это сократит количество одинаковых страниц (дублей).</p>
<p>Для создания каталога организаций, фотогалереи и прочих изысков, я решил использовать дополнительные <strong>типы записей</strong> (post_type) и <strong>таксономию</strong> (taxonomy). Полностью работоспособные эти функции только в третей ветке, которая ещё ждёт официального релиза, но мне не страшно, поэтому я обновляю до неё все свои сайты.</p>
<p>Также в этой версии есть отличнейшее нововведение, которое позволяет создавать симпатичные <strong>навигационные меню</strong> и отображать их с помощью виджетов. Обо всём об этом подробнее в следующих постах.</p>
<p>Приведу пример иерархии файлов в одном из шаблонов. Подробнее изучить <a href="http://codex.wordpress.org/Template_Hierarchy">этот вопрос</a> можно в Кодексе Wordpress.</p>
<ul>
<li>images/
<ul>
<li>logotype.jpg</li>
<li>sidebars.jpg</li>
</ul>
</li>
<li>category.php</li>
<li>comments.php</li>
<li>footer.php</li>
<li>functions.php</li>
<li>header.php</li>
<li>index.php</li>
<li>navigation.php</li>
<li>page.php</li>
<li>sidebar-banner.php</li>
<li>sidebar-banner_two.php</li>
<li>sidebar-two.php</li>
<li>sidebar.php</li>
<li>single-firms.php</li>
<li>single.php</li>
<li>style.css</li>
<li>tag.php</li>
<li>taxonomy-city.php</li>
<li>taxonomy-firmcat.php</li>
</ul>
<p>На некоторых сайтах я разрешил <strong>регистрацию</strong> и организовал пространство пользователя примерно так, как я рассказал об этом в уроке &laquo;<a href="http://seogad.ru/tools/cms/thememylogin">Подключение темы Wordpress к страницам профиля, регистрации и авторизации</a>&raquo;.</p>
<p>Для создания <strong>постраничной навигации</strong> я решил не использовать плагины, а обойтись небольшим кодом, написанным некогда моим другом Сергеем в ходе совместной работы над одним проектом. С его позволения делюсь с вами этим маленьким чудом:</p>
<p><code>&lt;/p&gt;<br />
&lt;div class="navigation_pages"&gt;<br />
&lt;?php&lt;br /&gt;<br />
global $wp_query;&lt;br /&gt;<br />
$max_page = $wp_query-&gt;max_num_pages;&lt;br /&gt;<br />
$nump=100;&lt;br /&gt;<br />
if($max_page&gt;1){&lt;br /&gt;<br />
        $paged = intval(get_query_var('paged'));&lt;br /&gt;<br />
        if(empty($paged) || $paged == 0) $paged = 1;&lt;br /&gt;<br />
        echo '<br />
&lt;p&gt;';&lt;br /&gt;<br />
        if($paged!=1) echo '&lt;a href="'.get_pagenum_link(1).'" class="link"&gt;1&lt;/a&gt; ';&lt;br /&gt;<br />
                else echo '&lt;span class="link"&gt;1&lt;/span&gt; ';&lt;br /&gt;<br />
		if ($paged&lt;=($nump/2)){&lt;br /&gt;<br />
			$start=2;&lt;br /&gt;<br />
			$end=$nump;&lt;br /&gt;<br />
		}elseif(($paged+($nump/2))&gt;$max_page){&lt;br /&gt;<br />
			$start=$paged-($nump-($max_page-$paged));&lt;br /&gt;<br />
			$end=$max_page-1;&lt;br /&gt;<br />
		}elseif($paged&gt;($nump/2)){&lt;br /&gt;<br />
			$start=$paged-($nump/2); if ($start == 1) ++$start;&lt;br /&gt;<br />
			$end=$paged+($nump/2); if ($end == $max_page) --$end;&lt;br /&gt;<br />
		}&lt;br /&gt;<br />
		if ($nump &gt;= $max_page){$end = $max_page-1;};&lt;br /&gt;<br />
        if($start&gt;2) echo "&lt;span class='text'&gt;...&nbsp;&lt;/span&gt;";&lt;br /&gt;<br />
        for ($i=$start;$i&lt;=$end;$i++)&lt;br /&gt;<br />
         {&lt;br /&gt;<br />
         if($paged!=$i) echo '&lt;a href="'.get_pagenum_link($i).'" class="link"&gt;'.$i.'&lt;/a&gt; ';&lt;br /&gt;<br />
                else echo '&lt;span class="link"&gt;'.$i.'&lt;/span&gt; ';&lt;br /&gt;<br />
         }&lt;br /&gt;<br />
        if($end&lt;$max_page-1) echo "&lt;span class='text'&gt;...&nbsp;&lt;/span&gt;";&lt;br /&gt;<br />
        if($paged!=$max_page) echo '&lt;a href="'.get_pagenum_link($max_page).'" class="text"&gt;&raquo;&lt;/a&gt;';&lt;br /&gt;<br />
                else echo '&lt;span class="text"&gt;&raquo;&lt;/span&gt; ';&lt;br /&gt;<br />
        echo '&lt;/p&gt;<br />
&lt;p&gt;'     ;&lt;br /&gt;<br />
        }&lt;br /&gt;<br />
?&gt;<br />
&lt;/p&gt;&lt;/div&gt;<br />
&lt;p&gt;&lt;!-- (c)2009 NightMan sergey@arsav.com --&gt;&lt;br /&gt;</code></p>
<p>После разработки шаблонов необходимо будет разнести сайты по разным хостингам. Инфобокс вполне неплох, но предоставляемые им ip немногим отличаются, что может послужить поводом для бана всех сайтов. Для примера покажу несколько ip:</p>
<ul>
<li>77.221.138.102</li>
<li> 77.221.141.34</li>
<li> 77.221.141.35</li>
<li> 77.221.141.36</li>
<li> 77.221.141.37</li>
<li> 77.221.141.38</li>
<li> 77.221.142.250</li>
</ul>
<p>Похожи, не правда ли? Лучше не рисковать.</p>
<p>Напоследок добавлю, что сколько бы сайтов я ни делал, в каждый я вкладываю частичку своего времени, внимания, доброты и заботы, поэтому жить они будут долго и прибыльно.</p>
<p>Желаю вам всего самого познавательного.<br />
<a href="http://seogad.ru">Артём Савельев</a>.</p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (10.1)--></li>
		<li><a href="http://seogad.ru/seo/60000-tic-start" rel="bookmark">Марафон продолжается: операция тИЦ</a><!-- (8.8)--></li>
		<li><a href="http://seogad.ru/different/hosting" rel="bookmark">Марафон продолжается: жилищный вопрос, переносим сайты на разные хостинги</a><!-- (8.3)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/60000-themes/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Создание фотосайта на Wordpress без использования плагинов</title>
		<link>http://seogad.ru/cms/wordpress-photosite</link>
		<comments>http://seogad.ru/cms/wordpress-photosite#comments</comments>
		<pubDate>Fri, 26 Feb 2010 18:45:47 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[галерея]]></category>
		<category><![CDATA[уроки]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=1328</guid>
		<description><![CDATA[На днях случилось мне создать сайт на Wordpress, в основе которого фотогалерея с разными симпатяшками. Хотел было взяться за привычные потуги с плагином Magic Fields, примерно как в моём &#171;предыдущем уроке&#187;, но мой коллега вовремя меня одёрнул, указав на то, что Wordpress теперь вполне самостоятельный в плане колдовства с фотографиями. Стал он таким примерно с [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (14.8)--></li>
		<li><a href="http://seogad.ru/cms/magicfields-photosite" rel="bookmark">Создание фотосайта на Wordpress с помощью плагина Magic Fields</a><!-- (14.5)--></li>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (8)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/main3.jpg" alt="Создание фотосайта на Wordpress без использования плагинов" title="Создание фотосайта на Wordpress без использования плагинов" width="470" height="313" class="alignnone size-full wp-image-1432" /></p>
<p>На днях случилось мне создать сайт на Wordpress, в основе которого фотогалерея с разными симпатяшками. Хотел было взяться за привычные потуги с плагином Magic Fields, примерно как в моём &laquo;<a href="http://seogad.ru/tools/cms/magicfields-photosite">предыдущем уроке</a>&raquo;, но мой коллега вовремя меня одёрнул, указав на то, что Wordpress теперь вполне самостоятельный в плане колдовства с фотографиями. <span id="more-1328"></span></p>
<p>Стал он таким примерно с версии 2.9.2 (на более ранних не смотрел), но здесь ещё присутствует небольшая неприятность: до создания миниатюры записи необходимо либо сохранить запись, либо после загрузки изображения закрыть окно управления галереей, снова открыть его и только тогда выбрать миниатюру. </p>
<p>Самому может и не сложно было бы производить эти лишние действия, но клиенту такую нагрузку подбрасывать не хотелось. Спасением мне явилась третья ветка Wordpress, официальный выпуск которой ещё не случился, но по крайней мере этой глупости в ней уже нет, и создание фотосайта на Wordpress без использования плагинов становится возможным и приятным развлечением, которым мы сегодня себя и порадуем.</p>
<p>Для сегодняшнего урока я создал <a href="http://wp3.wptest.ru/">тестовый сайт</a> с <a href="http://wordpress.org/nightly-builds/wordpress-latest.zip">наипоследнейшей версией Wordpress</a>, где мы будем упражняться с кодом, и где вы сможете оценить результат наших стараний. Новый шаблон по умолчанию до некоторой степени заумный, и я ещё не успел разобраться с его устройством, поэтому операцию буду проводить на привычном шаблоне Default (отчего и у вас не должно возникнуть трудностей, потому что большинство шаблонов используют похожую структуру).</p>
<p>В последнее время получаю всё больше отзывов, в которых читатели просят делать мои уроки более подробными, чтобы даже &laquo;самые юные&raquo; пользователи Wordpress сумели со всем этим разобраться. По всему по этому буду стараться этим просьбам удовлетворять, и если что-то покажется вам до смеха элементарным&nbsp;&mdash; не серчайте, просто улыбнитесь.</p>
<p>Для начала создадим отдельную рубрику для наших фотографий, для чего пройдём в <em>Записи → Рубрики</em>.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/11.jpg" alt="Создание рубрики в Wordpress 3" title="Создание рубрики в Wordpress 3" width="470" height="636" class="alignnone size-full wp-image-1422" /></p>
<p>Не пугайтесь забавных фраз на англо-русском, это потому что версия Wordpress третья, а языковые файлы от второй. </p>
<p>Также нам нужно настроить размеры миниатюр, которые Wordpress будет любезно создавать для нас из загруженных в него изображений. Откроем страницу <em>Параметры → Медиафайлы</em> и установим нужные нам значения для маленькой, средней и крупной миниатюр. Я поставил 100, 400 и 900 пикселей по ширине и высоте.</p>
<p>Теперь мы можем загружать наши фотографии. Пройдём в <em>Записи → Добавить новую</em>, укажем заголовок, набросаем немного описательного текста для наших картинок, отметим нужную рубрику и приступим к загрузке фотографий.</p>
<p>Можно поступить по-разному: показывать в каждой записи по одной миниатюре или помимо миниатюры отображать ещё и остальные картинки из галереи. Я рассмотрю оба примера, а вы уже сами прицельтесь и сделайте так, как вам будет нужнее.</p>
<p>Для загрузки фотографий, воспользуемся самой первой кнопкой из четырёх находящихся справа от текста &laquo;Загрузить/вставить&raquo;. Если навести на неё курсор, должна появиться надпись &laquo;Добавить изображение&raquo; (или подобная, зависит от используемого перевода). После нажатия откроется симпатичное окошко, в котором мы и будем наслаждаться загрузкой изображений.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/2.jpg" alt="Загрузка изображений в Wordpress 3" title="Загрузка изображений в Wordpress 3" width="470" height="370" class="alignnone size-full wp-image-1355" /></p>
<p>Чтобы добавить заголовки изображений, необходимо справа от изображения кликнуть на слове &laquo;Показать&raquo;, откроется редактор изображения. В нём, справа от кнопки &laquo;Вставить в запись&raquo;, которую в данном случае нажимать не нужно, находится ссылка &laquo;Использовать как миниатюру&raquo;, которую мы и используем, чтобы создать миниатюру для записи.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/3.jpg" alt="Создание миниатюры в Wordpress 3" title="Создание миниатюры в Wordpress 3" width="470" height="190" class="alignnone size-full wp-image-1357" /></p>
<p>Публикуем запись и открываем файл <em>functions.php</em>, который находится в папке используемого шаблона, и в который мы добавим пару нужностей. Если вы, как и я, хотите изменять файлы темы непосредственно через админку Wordpress, перейдите на страницу <em>Внешний вид → Редактор (Editor)</em> и из списка справа выберите необходимый файл.</p>
<p>Приступим к изменениям. Во-первых, если в вашей теме нет фразы &laquo;add_theme_support&raquo; (это можно выяснить поиском по странице: Ctrl+F), это означает что тема не поддерживает миниатюры, что необходимо исправить добавлением следующего кода:</p>
<p><code>if ( function_exists( 'add_theme_support' ) )&lt;br /&gt;<br />
add_theme_support( 'post-thumbnails' );</code></p>
<p>в подходящее место, например перед последним закрывающим тегом:</p>
<p><code>?&gt;</code></p>
<p>Во-вторых, для более удобного управления записями с фотографиями, добавим сразу после нашего кода ещё чуть-чуть писанины:</p>
<p><code>if ( !function_exists('fb_AddThumbColumn') &#038;& function_exists('add_theme_support') ) {&lt;br /&gt;<br />
	// for post and page&lt;br /&gt;<br />
	add_theme_support('post-thumbnails', array( 'post', 'page' ) );&lt;br /&gt;<br />
	function fb_AddThumbColumn($cols) {&lt;br /&gt;<br />
		$cols['thumbnail'] = __('Thumbnail');&lt;br /&gt;<br />
		return $cols;&lt;br /&gt;<br />
	}&lt;br /&gt;<br />
	function fb_AddThumbValue($column_name, $post_id) {&lt;br /&gt;<br />
			$width = (int) 35;&lt;br /&gt;<br />
			$height = (int) 35;&lt;br /&gt;<br />
			if ( 'thumbnail' == $column_name ) {&lt;br /&gt;<br />
				// thumbnail of WP 2.9&lt;br /&gt;<br />
				$thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );&lt;br /&gt;<br />
				// image from gallery&lt;br /&gt;<br />
				$attachments = get_children( array('post_parent' =&gt; $post_id, 'post_type' =&gt; 'attachment', 'post_mime_type' =&gt; 'image') );&lt;br /&gt;<br />
				if ($thumbnail_id)&lt;br /&gt;<br />
					$thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );&lt;br /&gt;<br />
				elseif ($attachments) {&lt;br /&gt;<br />
					foreach ( $attachments as $attachment_id =&gt; $attachment ) {&lt;br /&gt;<br />
						$thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );&lt;br /&gt;<br />
					}&lt;br /&gt;<br />
				}&lt;br /&gt;<br />
					if ( isset($thumb) &#038;& $thumb ) {&lt;br /&gt;<br />
						echo $thumb;&lt;br /&gt;<br />
					} else {&lt;br /&gt;<br />
						echo __('None');&lt;br /&gt;<br />
					}&lt;br /&gt;<br />
			}&lt;br /&gt;<br />
	}&lt;br /&gt;<br />
	// for posts&lt;br /&gt;<br />
	add_filter( 'manage_posts_columns', 'fb_AddThumbColumn' );&lt;br /&gt;<br />
	add_action( 'manage_posts_custom_column', 'fb_AddThumbValue', 10, 2 );&lt;br /&gt;<br />
	// for pages&lt;br /&gt;<br />
	add_filter( 'manage_pages_columns', 'fb_AddThumbColumn' );&lt;br /&gt;<br />
	add_action( 'manage_pages_custom_column', 'fb_AddThumbValue', 10, 2 );&lt;br /&gt;<br />
}</code></p>
<p>Это снабдит список записей миниатюрой.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/4.jpg" alt="Миниатюра в списке записей в Wordpress" title="Миниатюра в списке записей в Wordpress" width="470" height="204" class="alignnone size-full wp-image-1373" /></p>
<p>На этом махинации с файлом <em>functions.php</em> заканчиваются, и нам остаётся отобразить наши изображения в шаблоне. Начнём с категории фотографий, откроем для редактирования файл <em>archive.php</em> (или <em>index.php</em>, если его нет) и после фразы:</p>
<p><code>the_post();</code></p>
<p>добавим:</p>
<p><code>if (is_category('photos') &#038;& !is_single()) { ?&gt;ЗДЕСЬ БУДЕТ КАРТИНКА&lt;?php } else {</code></p>
<p>и чтобы закрыть условие, перед:</p>
<p><code>endwhile;</code></p>
<p>вставим:</p>
<p><code>}</code></p>
<p>Вместо &laquo;photos&raquo;, вставьте в код ID вашей категории с фотографиями или её slug (альтернативное имя латинскими буквами для адреса страницы). Теперь нам нужно заменить фразу <em>ЗДЕСЬ БУДЕТ КАРТИНКА</em> на код, который будет эту картинку показывать:</p>
<p><code>&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;br /&gt;<br />
&lt;?php the_post_thumbnail('thumbnail'); ?&gt;&lt;/a&gt;</code></p>
<p>Если хотите, можно несколько усложнить себе жизнь и настроить появление среднего изображения при наведении курсора на миниатюру. Для этого, вместо предложенного выше кода необходимо вставить следующий:</p>
<p><code>&lt;a href="&lt;?php the_permalink() ?&gt;"&lt;br /&gt;<br />
class="tooltip" style="z-index:&lt;?php the_ID(); ?&gt;;"&gt;&lt;br /&gt;<br />
&lt;?php the_post_thumbnail('thumbnail'); ?&gt;&lt;br /&gt;<br />
&lt;span&gt;&lt;?php the_post_thumbnail(array(300, 300),&lt;br /&gt;<br />
array('class' =&gt; 'imagetooltip')); ?&gt;&lt;/span&gt;&lt;/a&gt;</code></p>
<p>и чтобы всё было чистенько и красиво, в самом конце файла <em>style.css</em> добавим необходимые стили:</p>
<p><code>.tooltip img {&lt;br /&gt;<br />
	border:4px solid #dddddd;&lt;br /&gt;<br />
	z-index:1000;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.tooltip {&lt;br /&gt;<br />
	position:relative;&lt;br /&gt;<br />
	margin-right:15px;&lt;br /&gt;<br />
	display:block;&lt;br /&gt;<br />
	float:left;&lt;br /&gt;<br />
	margin-bottom:15px;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.tooltip span {&lt;br /&gt;<br />
  position: absolute;&lt;br /&gt;<br />
  right: 0;&lt;br /&gt;<br />
  top: 95px;&lt;br /&gt;<br />
  display: none;&lt;br /&gt;<br />
  left:95px;&lt;br /&gt;<br />
  min-width: 50px;&lt;br /&gt;<br />
  padding: 0;&lt;br /&gt;<br />
  white-space: nowrap;&lt;br /&gt;<br />
  font-size: 11px;&lt;br /&gt;<br />
  text-align: right;&lt;br /&gt;<br />
  background:none;&lt;br /&gt;<br />
  color: #fff;&lt;br /&gt;<br />
  z-index:9000;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.tooltip span img {border:0;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.tooltip span small {&lt;br /&gt;<br />
	display:none;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.tooltip:hover span { display: block; }</code></p>
<p>В итоге получаем вот такую красотень. Ссылка с картинки ведёт на демо.</p>
<p style="text-align: center;"><a href="http://wp3.wptest.ru/category/photos/"><img src="http://seogad.ru/wp-content/uploads/2010/02/5.jpg" alt="Фотогалерея на Wordpress. Список миниатюр со всплывающим увеличенным изображением" title="Фотогалерея на Wordpress. Список миниатюр со всплывающим увеличенным изображением" width="470" height="206" class="alignnone size-full wp-image-1392" /></a></p>
<p>Займёмся теперь одиночной записью, шаблон которой скрывается в файле <em>single.php</em>. Откроем этот файл и после:</p>
<p><code>the_post();</code></p>
<p>добавим:</p>
<p><code>if (in_category('photos')) { ?&gt;ЗДЕСЬ БУДЕТ КАРТИНКА&lt;?php } else {</code></p>
<p>и закроем условие, добавив:</p>
<p><code>}</code></p>
<p>перед:</p>
<p><code>comments_template();</code></p>
<p>или, если вы не используете в своём шаблоне комментарии, перед:</p>
<p><code>endwhile;</code></p>
<p>Не забываем заменить &laquo;photos&raquo; на slug или ID своей категории. Чтобы наши изображения красиво увеличивались при нажатии, установим плагин <a href="http://wordpress.org/extend/plugins/shutter-reloaded/">Shutter Reloaded</a>, и перейдя на страницу <em>Внешний вид → Shutter Reloaded</em>, активируем второй вариант преобразования ссылок (если это не сделано по умолчанию).</p>
<p>Затем приступим к замене фразы <em>ЗДЕСЬ БУДЕТ КАРТИНКА</em> на что-нибудь более существенное. Ранее я обещал показать два разных варианта отображения картинок в одиночной записи. На тестовом сайте вы можете посмотреть <a href="http://wp3.wptest.ru/photos/toulouse/">оба варианта на одной странице</a>&nbsp;&mdash; используйте подходящий.</p>
<p>Чтобы отобразить среднее изображение, заменим нашу фразу на следующий код:</p>
<p><code>&lt;a rel="lightbox[]" href="&lt;?php $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id(), 'large');&lt;br /&gt;<br />
echo $thumbnail[0]; ?&gt;" &gt;&lt;?php the_post_thumbnail('medium'); ?&gt;&lt;/a&gt;</code></p>
<p>а если нам нужны все изображения записи, то получить их можно следующим образом (нужно убрать из кода пробел перед <em>gallery</em>):</p>
<p><code>&lt;?php echo do_shortcode('[ gallery columns="6" size="thumbnail" itemtag="ul" icontag="li" captiontag="p" link="file"]'); ?&gt;</code></p>
<p>Объясню некоторые параметры:</p>
<ul>
<li><em>columns</em>&nbsp;&mdash; количество изображений в строке;</li>
<li><em>size</em>&nbsp;&mdash; размер изображения, у нас указана миниатюра, можно выбрать <em>среднее (medium)</em> или <em>большое (large)</em> изображение;</li>
<li><em>link</em>&nbsp;&mdash; куда ведёт ссылка с изображения, в нашем случае откроется оригинальный файл.</li>
</ul>
<p>Подробнее о разных параметрах <a href="http://codex.wordpress.org/Gallery_Shortcode">здесь</a> (осторожно, английский).</p>
<p>Теперь добавим немножко красок в файл <em>style.css</em>, чтобы всё у нас выглядело ровно и красиво. В конце файла вставим:</p>
<p><code>.gallery .gallery-item {&lt;br /&gt;<br />
	width:110px !important;&lt;br /&gt;<br />
	margin:0;&lt;br /&gt;<br />
	padding:0;&lt;br /&gt;<br />
	margin-right:15px !important;&lt;br /&gt;<br />
	margin-bottom:15px !important;&lt;br /&gt;<br />
	list-style:none;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.gallery .gallery-item li {&lt;br /&gt;<br />
	margin:0 !important;&lt;br /&gt;<br />
	padding:0 !important;&lt;br /&gt;<br />
	list-style:none;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.gallery .gallery-item li a {&lt;br /&gt;<br />
	border:4px solid #dddddd;&lt;br /&gt;<br />
	display:block !important;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
.gallery .gallery-item li a img {&lt;br /&gt;<br />
	border:0 !important;&lt;br /&gt;<br />
}</code></p>
<p>Смотрим, что у нас получилось, и потихоньку начинаем радоваться.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/6.jpg" alt="Галерея изображений на Wordpress без использования плагинов" title="Галерея изображений на Wordpress без использования плагинов" width="470" height="519" class="alignnone size-full wp-image-1410" /></p>
<p>В принципе, фундамент заложен, галерея уже работает и может вполне пригодиться даже в таком виде, но я хотел бы ещё рассказать вам, как добавить пару полезных виджетов, которые будут отображать случайные и последние фотографии. Вновь откроем файл <em>functions.php</em> и перед закрывающим тегом:</p>
<p><code>?&gt;</code></p>
<p>добавим виджет случайного показа изображений:</p>
<p><code>function randomimages() {  $randomimg = new WP_Query('cat=3&#038;showposts=2&#038;orderby=rand');&lt;br /&gt;<br />
if($randomimg-&gt;have_posts()) : ?&gt;&lt;br /&gt;<br />
&lt;h3&gt;Случайные изображения&lt;/h3&gt;<br />
&lt;p&gt;&lt;?php&lt;br /&gt;<br />
while($randomimg-&gt;have_posts()) :  $randomimg-&gt;the_post(); ?&gt;&lt;br /&gt;<br />
&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_post_thumbnail(array(60, 60), array('class' =&gt; 'imagetooltip')); ?&gt;&lt;/a&gt;&lt;br /&gt;<br />
&lt;?php endwhile; endif; };</code></p>
<p>ниже добавим виджет для показа последних добавленных изображений:</p>
<p><code>function lastimages() {  $lastimg = new WP_Query('cat=3&#038;showposts=2&#038;orderby=date&#038;order=DESC');&lt;br /&gt;<br />
if($lastimg-&gt;have_posts()) : ?&gt;&lt;br /&gt;<br />
&lt;h3&gt;Новые изображения&lt;/h3&gt;<br />
&lt;p&gt;&lt;?php&lt;br /&gt;<br />
while($lastimg-&gt;have_posts()) :  $lastimg-&gt;the_post(); ?&gt;&lt;br /&gt;<br />
&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_post_thumbnail(array(60, 60), array('class' =&gt; 'imagetooltip')); ?&gt;&lt;/a&gt;&lt;br /&gt;<br />
&lt;?php endwhile; endif; };</code></p>
<p>и закончим всё это дело регистрацией виджетов:</p>
<p><code>function register_my_widget() {&lt;br /&gt;<br />
register_sidebar_widget('Случайные изображения', 'randomimages');&lt;br /&gt;<br />
register_sidebar_widget('Новые изображения', 'lastimages');&lt;br /&gt;<br />
}&lt;br /&gt;<br />
add_action('init', 'register_my_widget');;</code></p>
<p>Изменения шаблона закончены. Теперь нам останется перейти на страницу <em>Внешний вид → Виджеты</em> и активировать наши новенькие виджеты, перебросив их в один из сайдбаров. Вот что у нас получилось.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/7.jpg" alt="Фотогалерея на Wordpress с виджедами случайных и последних фотографий" title="Фотогалерея на Wordpress с виджедами случайных и последних фотографий" width="470" height="281" class="alignnone size-full wp-image-1416" /></p>
<p>На этом урок окончен. Посмотреть результат в действии можно на <a href="http://wp3.wptest.ru/category/photos/">тестовом сайте</a>. Помните, что всё это только примеры, которые вы можете использовать как вам угодно, изменяя их под себя&nbsp;&mdash; главное не бояться, читать документацию, и не забывать, что Гугл знает ответы на большую часть ваших вопросов, связанных с Wordpress.</p>
<p>Если будет нужна помощь&nbsp;&mdash; оставляйте комментарии, постараемся решить вопрос качественно и оперативно.</p>
<p>Желаю вам всего самого интересного. До новых встреч.<br />
<a href="http://seogad.ru">Артём Савельев</a>.</p>
<p><em>P.S. Юридической фирмой &laquo;Центр правового обслуживания&raquo; предлагается <a href="http://www.pravorf.ru/services/rejderstvo-sposoby-zaschity/">защита от рейдерского захвата</a>&nbsp;&mdash; многолетний профессиональный опыт в этой области.</em></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/catalog-wordpress" rel="bookmark">Создаём каталог организаций на Wordpress без использования плагинов</a><!-- (14.8)--></li>
		<li><a href="http://seogad.ru/cms/magicfields-photosite" rel="bookmark">Создание фотосайта на Wordpress с помощью плагина Magic Fields</a><!-- (14.5)--></li>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (8)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/wordpress-photosite/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Создание фотосайта на Wordpress с помощью плагина Magic Fields</title>
		<link>http://seogad.ru/cms/magicfields-photosite</link>
		<comments>http://seogad.ru/cms/magicfields-photosite#comments</comments>
		<pubDate>Tue, 16 Feb 2010 07:52:45 +0000</pubDate>
		<dc:creator>Артём Савельев</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Magic Fields]]></category>
		<category><![CDATA[галерея]]></category>
		<category><![CDATA[уроки]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://seogad.ru/?p=1121</guid>
		<description><![CDATA[Продолжаю серию уроков по использованию замечательного плагина Magic Fields. Сегодня мы подробно рассмотрим создание полноценной фотогалереи или портфолио художника (что-то похожее в своё время я реализовал на сайте Виктора Лукьянова). В установке Wordpress нет ничего сложного (тем не менее когда-нибудь чего-нибудь хотелось бы об этом написать, для самых маленьких), о том, как установить и настроить [...]

<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (20.5)--></li>
		<li><a href="http://seogad.ru/cms/magic-fields-wordpress-plugin" rel="bookmark">Плагин Magic Fields&nbsp;&mdash; создание дополнительных полей в Wordpress</a><!-- (15.6)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (13.6)--></li>
	</ul></div>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/main.jpg" alt="" title="Создание фотогалереи на Wordpress с помощью плагина Magic Fields" width="470" height="313" class="alignnone size-full wp-image-1202" /></p>
<p>Продолжаю серию уроков по использованию замечательного плагина <a href="http://magicfields.org/">Magic Fields</a>. Сегодня мы подробно рассмотрим создание полноценной фотогалереи или портфолио художника (что-то похожее в своё время я реализовал на сайте <a href="http://www.loukianov.ru/">Виктора Лукьянова</a>). <span id="more-1121"></span></p>
<p>В установке Wordpress нет ничего сложного (тем не менее когда-нибудь чего-нибудь хотелось бы об этом написать, для самых маленьких), о том, как установить и настроить плагин Magic Fields я писал во <a href="http://seogad.ru/cms/magic-fields-wordpress-plugin">вступительной статье</a> этой серии.</p>
<p>По традиции, все действия я буду проделывать вместе с вами, результаты можно посмотреть на <a href="http://wptest.ru/">тестовом сайте</a>, предназначенном специально для демонстрации моих уроков.</p>
<p>Для начала нам понадобится зайти в панель администратора и <em>создать новую категорию</em> под рабочим названием &laquo;Фотографии&raquo;. Затем, чтобы создать <em>панель записей</em> пройдём в <em>Magic Fields → Write Panels (Панели записей)</em> и там нажмём на <em>Create a Write Panel (Создать панель записей)</em>.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/create-panel.jpg" alt="" title="Создание дополнительной панели записей на Wordpress с помощью Magic Fields" width="470" height="616" class="alignnone size-full wp-image-1134" /></p>
<p>Теперь создадим группу дополнительных полей под названием &laquo;Фотография&raquo;. Для этого перейдём на страницу <em>Magic Fields → Write Panels (Панели записей)</em> и там кликнем на <em>Edit Fields/Groups (Изменить поля/группы)</em> напротив только что созданной панели «Фото». Там нажимаем на <em>Create a Group</em> и создаём группу.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/create-group.jpg" alt="" title="Создание группы дополнительных полей в Wordpress с помощью плагина Magic Fields" width="470" height="220" class="alignnone size-full wp-image-1137" /></p>
<p>Теперь мы вполне можем позволить себе создать дополнительные поля. Добавим поле «Изображение»: для этого сбегаем в <em>Magic Fields → Write Panels (Панели записей)</em>, напротив панели «Фото» выберем <em>Edit Fields/Groups (Изменить поля/группы)</em> и далее <em>create field (создать поле)</em> справа от группы «Фотография». В качестве <em>типа поля (Type)</em> выберем <em>Image</em>.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/create-image-field.jpg" alt="" title="Создание поля для изображения в Wordpress с помощью плагина Magic Fields" width="470" height="797" class="alignnone size-full wp-image-1144" /></p>
<p>После нажатия на кнопку <em>Continue</em> нам будет предложено настроить максимальные параметры для изображения, поставим <em>Width (Ширину)</em> 400 пикселей и завершим создание дополнительного поля для изображения кнопкой <em>Finish (Закончить)</em>.</p>
<p>Добавим поле &laquo;Описание&raquo;, чтоб иметь возможность подписывать наши изображения. Проделаем всё то же, что и с предыдущим полем, но в качестве <em>типа (Type)</em> выберем <em>Multiline Textbox</em>.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/create-description-field.jpg" alt="" title="Создание дополнительно поля для описание изображения в Wordpress с помощью Magic Fields" width="470" height="777" class="alignnone size-full wp-image-1152" /></p>
<p>Нажав на <em>Continue</em>, настроим предложенные опции следующим образом.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/create-description-field-2.jpg" alt="" title="Настройка  дополнительного поля для описания в Wordpress" width="470" height="243" class="alignnone size-full wp-image-1153" /></p>
<p>Чтобы иметь возможность сортировать изображения по годам, добавим соответствующее поле, в качестве<em> типа (Type)</em> используем <em>Textbox</em>, а в поле <em>Name</em> укажем &laquo;imyear&raquo;.</p>
<p>Чтобы было чем развлекать себя дальше, добавим пару пробных изображений. Пройдём в панель &laquo;Фото&raquo; и выберем <em>New (Новая запись)</em>.</p>
<p style="text-align: center;"><img src="http://seogad.ru/wp-content/uploads/2010/02/add-image.jpg" alt="" title="Добавление изображения в фотогалерею на Wordpress" width="470" height="618" class="alignnone size-full wp-image-1161" /></p>
<p>Теперь у нас есть всё для того, чтобы произвести изменения в шаблоне. Я по-прежнему в качестве примера использую шаблон по умолчанию (Default), если у вас возникнут трудности с интеграцией моего кода в свой шаблон, свяжитесь со мной по почте или через комментарии, постараюсь помочь.</p>
<p>Начнём с одиночной записи. Откроем файл <em>single.php</em> и после:</p>
<p><code>&lt;?php the_content('<br />
&lt;p class="serif"&gt;' . __('Read the rest of this entry &raquo;', 'kubrick') . '&lt;/p&gt;<br />
&lt;p&gt;'); ?&gt;</code></p>
<p>добавим изображение:</p>
<p><code>&lt;?php $image = get('image');  if($image != '') { ?&gt;&lt;br /&gt;<br />
&lt;? echo get_image('image'); ?&gt;&lt;br /&gt;<br />
&lt;?php } ?&gt;</code></p>
<p>и снабдим его описанием:</p>
<p><code>&lt;?php $description = get('description');  if($description!= '') { ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php echo get('description'); ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php } ?&gt;</code></p>
<p>подчеркнём всё это дело годом:</p>
<p><code>&lt;?php $imyear = get('imyear');  if($imyear!= '') { ?&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;?php echo get('imyear'); ?&gt;  год&lt;/p&gt;<br />
&lt;p&gt;&lt;?php } ?&gt;</code></p>
<p>и порадуемся тому, что у нас всё работает и не глючит.</p>
<p><a href="http://wptest.ru/photos/testovaya-fotografiya/"><img src="http://seogad.ru/wp-content/uploads/2010/02/exemple.jpg" alt="" title="Артём Савельев в Воронеже с Бимом" width="395" height="570" class="aligncenter size-full wp-image-1168" /></a></p>
<p>Теперь подправим шаблон категории, чтобы красиво разместить в нём изображения из рубрики &laquo;Фотографии&raquo;. Откроем файл <em>archive.php (и/или index.php)</em> и после:</p>
<p><code>&lt;?php while (have_posts()) : the_post(); ?&gt;</code></p>
<p>добавим:</p>
<p><code>&lt;?php if (is_category(42) || in_category(42) &#038;& !is_home() &#038;& !is_single()) { ?&gt;&lt;br /&gt;<br />
ЗДЕСЬ БУДЕТ ИЗОБРАЖЕНИЕ&lt;br /&gt;<br />
&lt;?php } else { ?&gt;</code></p>
<p>42&nbsp;&mdash; это ID категории с фотографиями, можно узнать его, если навести курсор на нужную рубрику в админке и посмотреть на адрес ссылки.</p>
<p>Чтобы закончить код, необходимо перед:</p>
<p><code>&lt;?php endwhile; ?&gt;</code></p>
<p>добавить:</p>
<p><code>&lt;?php }; ?&gt;</code></p>
<p>Теперь нам необходимо заменить фразу <em>ЗДЕСЬ БУДЕТ ИЗОБРАЖЕНИЕ</em> на маленькое превью. Добавим на место этой фразы код, который позволит пропорционально уменьшать ширину и высоту изображений.</p>
<p><code>&lt;?php&lt;br /&gt;<br />
//Новая ширина = Данная высота * (Изначальная ширина / Изначальная высота)&lt;br /&gt;<br />
//Новая высота = Данная ширина * (Изначальная высота / Изначальная ширина)&lt;br /&gt;<br />
$img = @getimagesize(''.get('gallery_image').'');&lt;br /&gt;<br />
$w = $img[0];&lt;br /&gt;<br />
$h = $img[1];&lt;br /&gt;<br />
$defaultImageWidth = 150; //замените на желаемую ширину&lt;br /&gt;<br />
$defaultImageHeight = 150; //замените на желаемую высоту&lt;br /&gt;<br />
$imageWidth = $w; // используйте getimagesize() для получения ширины изображения&lt;br /&gt;<br />
$imageHeight = $h; // используйте getimagesize() для получения высоты изображения&lt;br /&gt;<br />
if($imageWidth &gt; $imageHeight)&lt;br /&gt;<br />
{&lt;br /&gt;<br />
    // альбомное изображение&lt;br /&gt;<br />
    $newWidth = $defaultImageWidth;&lt;br /&gt;<br />
    $newHeight = (int)($defaultImageWidth * $imageHeight / $imageWidth);&lt;br /&gt;<br />
    if($newHeight &gt; $defaultImageHeight)&lt;br /&gt;<br />
    {&lt;br /&gt;<br />
        $newHeight = $defaultImageHeight;&lt;br /&gt;<br />
        $newWidth = (int)($defaultImageHeight * $imageWidth / $imageHeight);&lt;br /&gt;<br />
    }&lt;br /&gt;<br />
}&lt;br /&gt;<br />
elseif ($imageHeight &gt; $imageWidth)&lt;br /&gt;<br />
{&lt;br /&gt;<br />
    // портрет&lt;br /&gt;<br />
    $newHeight = $defaultImageHeight;&lt;br /&gt;<br />
    $newWidth = (int)($defaultImageHeight * $imageWidth / $imageHeight);&lt;br /&gt;<br />
    if($newWidth &gt; $defaultImageWidth)&lt;br /&gt;<br />
    {&lt;br /&gt;<br />
        $newWidth = $defaultImageWidth;&lt;br /&gt;<br />
        $newHeight = (int)($defaultImageWidth * $imageHeight / $imageWidth);&lt;br /&gt;<br />
    }&lt;br /&gt;<br />
}&lt;br /&gt;<br />
else&lt;br /&gt;<br />
{&lt;br /&gt;<br />
    // квадратное изображение&lt;br /&gt;<br />
    $newWidth = $defaultImageWidth;&lt;br /&gt;<br />
    $newHeight = $defaultImageHeight;&lt;br /&gt;<br />
} ?&gt;</code></p>
<p>Чтобы показать изображение, после этого кода нужно добавить следующий:</p>
<p><code>&lt;a href="&lt;?php the_permalink() ?&gt;"&lt;br /&gt;<br />
class="image_photogallery"&gt;&lt;br /&gt;<br />
&lt;img src="&lt;?php echo pt(); ?&gt;?src=&lt;? echo get('image'); ?&gt;&#038;w=&lt;?php echo $newWidth ?&gt;&#038;h=&lt;?php echo $newHeight ?&gt;"&lt;br /&gt;<br />
alt="&lt;?php the_title(); ?&gt;"&lt;br /&gt;<br />
title="&lt;?php the_title(); ?&gt;"  /&gt;&lt;br /&gt;<br />
&lt;/a&gt;</code></p>
<p>Я использовал класс <em>.image_photogallery</em>, стиль которого мы немедленно настроим в файле <em>style.css</em>, в конце которого добавим, например, такой код:</p>
<p><code>a.image_photogallery {&lt;br /&gt;<br />
display:block;&lt;br /&gt;<br />
float:left;&lt;br /&gt;<br />
width:180px;&lt;br /&gt;<br />
height:180px;&lt;br /&gt;<br />
text-align:center;&lt;br /&gt;<br />
background-color:#CCCCCC;&lt;br /&gt;<br />
margin-right:15px;&lt;br /&gt;<br />
margin-bottom:15px;&lt;br /&gt;<br />
}&lt;br /&gt;<br />
a.image_photogallery img {&lt;br /&gt;<br />
margin-top:15px;&lt;br /&gt;<br />
margin-bottom:15px;&lt;br /&gt;<br />
border:1px solid #FFFFFF;&lt;br /&gt;<br />
}</code></p>
<p>И вот какая красотень у нас получилась. Конечно же, можно настроить стили как вам больше нравится, я только показал, что это возможно.</p>
<p style="text-align: center;"><a href="http://wptest.ru/category/photos/"><img src="http://seogad.ru/wp-content/uploads/2010/02/exemple2.jpg" alt="" title="Пример фотогалереи на Wordpress" width="411" height="404" class="aligncenter size-full wp-image-1190" /></a></p>
<p>Теперь не лишним будет добавить фильтр по годам. Для этого в файле <em>archive.php (и/или index.php)</em> перед:</p>
<p><code>&lt;?php while (have_posts()) : the_post(); ?&gt;</code></p>
<p>вставьте:</p>
<p><code>&lt;?php if (is_category(42) || in_category(42) &#038;& !is_home() &#038;& !is_single()) { ?&gt;&lt;/p&gt;<br />
&lt;form method="post" action=""&gt;<br />
&lt;p&gt;Год:&lt;/p&gt;<br />
&lt;select name="imyear" &gt;<br />
&lt;option value=""&gt;&lt;/option&gt;<br />
&lt;p&gt;&lt;?php&lt;br /&gt;<br />
$listyears2 = $wpdb-&gt;get_results("SELECT DISTINCT meta_value FROM $wpdb-&gt;postmeta&lt;br /&gt;<br />
WHERE meta_key = 'imyear' ORDER BY meta_value");&lt;br /&gt;<br />
foreach ($listyears2 as $listyear2) {&lt;br /&gt;<br />
if ($listyear2-&gt;meta_value != '') {&lt;br /&gt;<br />
$option = '&lt;br /&gt;<br />
&lt;option ';&lt;br /&gt;<br />
if ($listyear2-&gt;meta_value == $_REQUEST["imyear"]) {$option .= 'selected '; }&lt;br /&gt;<br />
$option .= 'value="'.$listyear2-&gt;meta_value.'"&gt;';&lt;br /&gt;<br />
$option .= $listyear2-&gt;meta_value;&lt;br /&gt;<br />
$option .= '&lt;/option&gt;<br />
&lt;p&gt;';&lt;br /&gt;<br />
echo $option;&lt;br /&gt;<br />
}} ?&gt;&lt;br /&gt;<br />
&lt;/select&gt;<br />
&lt;/p&gt;<br />
&lt;input type="submit" value="Показать" class="s_submit" name="submitimyear" /&gt;<br />
&lt;/form&gt;<br />
&lt;p&gt;&lt;?php if (isset($_REQUEST["imyear"])) { $paramyear2=$_REQUEST["imyear"]; } else { $paramyear2=""; };&lt;br /&gt;<br />
if ($paramyear2!= "") {&lt;br /&gt;<br />
query_posts($query_string . '&#038;x_imyear='.$paramyear2);&lt;br /&gt;<br />
} ?&gt;&lt;br /&gt;<br />
&lt;?php }; ?&gt;</code></p>
<p>Всё работает, наслаждаемся.</p>
<p style="text-align: center;"><a href="http://wptest.ru/category/photos/"><img src="http://seogad.ru/wp-content/uploads/2010/02/exemple3.jpg" alt="" title="Пример фотогалереи с фильтром по годам на Wordpress" width="411" height="297" class="aligncenter size-full wp-image-1198" /></a></p>
<p>Конечно, это один из самых простых примеров издевательства над Wordpress с помощью плагина Magic Fields, потенциал которого невероятен. Как только я закончу серию уроков по использованию этого плагина, я планирую составить из них книгу, более подробную и с большим количеством примеров. </p>
<p>Предлагайте свои идеи, расскажите, что вы хотели бы научиться создавать с помощью Magic Fields, и я постараюсь вам помочь в своих следующих постах.</p>
<p><em>P.S. Кстати, вчера получил на почту февральский выпуск журнала <a href="http://blogo-news.com/">БлогоNEWS</a>, который я прочитал почти ни на что не отвлекаясь за пару часов, от чего получил массу удовольствия, особенно когда обнаружил в рубрику &laquo;Дайджест Блогосферы&raquo; упоминание моего недавнего урока &laquo;<a href="http://seogad.ru/tools/cms/comment-modification">Украшаем комментарии в Wordpress</a>&raquo;, за что благодарен всетельно и вседушно и призываю всех почитать <a href="http://blogo-news.com/blogonewsnewdiz5.pdf">новый выпуск журнала БлогоNEWS</a>&nbsp;&mdash; очень много интересностей.</em></p>


<div class="entry relatedpostsentry"><h3>Статьи по теме:</h3>
<ul>
		<li><a href="http://seogad.ru/cms/mp3-wordpress-magic-fields-jplayer" rel="bookmark">Создание каталога песен на Wordpress с помощью Magic Fields и jPlayer</a><!-- (20.5)--></li>
		<li><a href="http://seogad.ru/cms/magic-fields-wordpress-plugin" rel="bookmark">Плагин Magic Fields&nbsp;&mdash; создание дополнительных полей в Wordpress</a><!-- (15.6)--></li>
		<li><a href="http://seogad.ru/cms/wordpress-photosite" rel="bookmark">Создание фотосайта на Wordpress без использования плагинов</a><!-- (13.6)--></li>
	</ul></div>
]]></content:encoded>
			<wfw:commentRss>http://seogad.ru/cms/magicfields-photosite/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

