<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
    <channel>
        <title>Блог roose</title>
        <link>http://roose.kz</link>
        <description></description>
        <pubDate>Mon, 27 Apr 2026 13:35:16 +0000</pubDate>
        <lastBuildDate>Mon, 27 Apr 2026 13:35:16 +0000</lastBuildDate>
        <language>ru</language>
        <item>
           <title>Semser - Photoshop плагин для быстрого экспорта</title>
           <description><![CDATA[<p>Привет всем, я тут кое-что сделал для того чтобы ускорить верстку =)</p>

<p>Встречайте, панель для Photoshop - Semser.</p>

<p><img src="https://roose.kz/uploads/2014/07/13/panel.png" alt="" /></p>

<p>Тратить 40 долларов на плагин к Photoshop мне не хотелось, да и часть функций мне не нужна была(сохранение в облако например), и я подумал, а сделаю-ка я сам такой плагин. Тем более оказалось что там используется HTML+CSS+Javascript.</p>

<p>Панелька пока может только сохранять выделенный слой(слои)/выделение в png или jpg или копировать в буфер обмена.</p>

<ul>
<li>PNG сохраняется в PNG-24</li>
<li>JPG сохраняется с 80% качеством</li>
<li>Если выделен фоновый слой или только он и есть, экспорта не происходит</li>
<li>При снятой галочки "Prompt file name", файл сохранится с именем слоя(при экспорте выделения так же =))</li>
<li>При установленной галочке "Trim" файл будет обрезан по прозрачным пикселям</li>
<li>При нажатии на кнопку "File" экспорт в файл, на "Clipboard" в буфер обмена</li>
</ul>

<p>Качать <a href="https://roose.kz/semser">тут</a>, писать в <a href="https://twitter.com/mr_roose">twitter</a></p>

<p>PS. Гифка с процессом:
<a href="https://roose.kz/uploads/2014/07/15/semser.gif"><img src="https://roose.kz/uploads/2014/07/15/semser.gif" alt="" /></a></p>
]]></description>
           <link>https://roose.kz/2014/07/13/semser-photoshop-panel</link>
           <guid isPermaLink="true">https://roose.kz/2014/07/13/semser-photoshop-panel</guid>
           <pubDate>Sun, 13 Jul 2014 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Переход на статику</title>
           <description><![CDATA[<p>Ну вот мой блог тоже перешел на статику, не стал правда заморачиваться Jekyll или Docpad, а написал свой "типадвижок".</p>

<p>Под капотом PHP и Markdown, RSS пока не работает и комментариев нет, и стоит ли их подключать, не знаю). Честно говоря блог я подзабросил, последний раз писал 3 июля 2011 года, думаю, буду теперь писать почаще, а пока покажу вам кое-что:</p>

<p><img src="http://roose.kz/uploads/2014/05/semser.png" alt="" /></p>

<p>Пишите мне в <a href="https://twitter.com/mr_roose">твиттере</a></p>

<p>P.S. Да кстати старые записи не совсем корректно перенеслись, пишите, поправлю =)</p>
]]></description>
           <link>https://roose.kz/2014/05/15/transition-to-static</link>
           <guid isPermaLink="true">https://roose.kz/2014/05/15/transition-to-static</guid>
           <pubDate>Thu, 15 May 2014 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Оффлайн документация WordPress</title>
           <description><![CDATA[<p>Согласитесь, помнить все функции и их параметры нереально, постоянно лезешь в кодекс, посмотреть правильное наименование или используемые параметры функции. Можно конечно скачать весь кодекс с помощью программы <a href="http://www.httrack.com/" title="HTTrack Website Copier - Offline Browser">HTTrack</a>, но там не будет поиска. Но тут я вспомнил, что код в WordPress’е хорошо документирован, и есть программы, которые создают на основе комментариев документацию.</p>

<p>Сперва я нашел <a href="http://www.phpdoc.org/" title="phpDocumentor: The complete documentation solution for PHP">phpDocumentor</a>, вроде бы все замечательно, генерит HTML + может делать проект для HTML Help, но… не заработал, то есть HTML генерит, но HTML Help получается почему-то без указателей и т.д.</p>

<p>Следующим был <a href="http://www.doxygen.org/" title="Doxygen">Doxygen</a>, вот он у меня заработал, и справка HTML Help тоже работала нормально. Настройки у него все понятные, указать пути, отметить галочку генерировать HTML Help, да и все. Правда он создает проект HTML Help, но сам его не делает, саму справку делает программа <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=21138" title="HTML Help Workshop and Documentation">HTML Help Workshop</a> от мелкомягких.</p>

<p><a href="http://roose.kz/uploads/doxygen.png"><img src="http://roose.kz/uploads/doxygen-450x362.png" alt="" title="doxygen" /></a></p>

<p>И сама справка:</p>

<p><a href="http://roose.kz/uploads/htmlhelp.png"><img src="http://roose.kz/uploads/htmlhelp-450x362.png" alt="" title="htmlhelp" /></a></p>

<p>Вот кажется сделал и все, должен быть доволен, но! Захотелось вызова справки из редактора кода по выделенной функции. Я работаю в <a href="http://www.pspad.com/ru/" title="Редактор PSPad - замечательный редактор текста и программного кода, PHP editor, XHTML, JavaScript, ASP, Perl, C , HEX editor:">PSPad</a>, и там есть вызов справки, но только по языкам, пришлось писать плагин.</p>

<p>Но тут встала еще одна проблема – при запуске справки нельзя указать ключевое слово, стандартная программа hh.exe этого делать не дает. Но это позволяет сделать другая программа KeyHH, к сожалению сайт программы не работает, так что скачать можете <a href="http://roose.kz/uploads/KeyHHSetup.zip" title="KeyHH is a program that augments HTML Help">тут</a>.</p>

<p>А вот сам <a href="http://roose.kz/uploads/wp_help.zip" title="PSPad WordPress Help Plugin">плагин</a>:</p>

<pre><code>var shell = new ActiveXObject("WScript.shell");
function open_help() {
    var ceDoc = newEditor();
    ceDoc.assignActiveEditor();
    var s = ceDoc.selText();
    shell.run("keyhh.exe -#klink "+s+" путь/к_справке.chm");
}
function Init(){
    addMenuItem("Open WordPress Help", "WordPress", "open_help", "ALT+F2");
}
</code></pre>

<p>теперь когда выделена какая-нибудь функция WordPress(без скобок)</p>

<p><a href="http://roose.kz/uploads/pspad.png"><img src="http://roose.kz/uploads/pspad-450x362.png" alt="" title="pspad" /></a></p>

<p>нажимаем ALT+F2 и вуаля, открывается справка с нашей функцией</p>

<p><a href="http://roose.kz/uploads/wphelp.png"><img src="http://roose.kz/uploads/wphelp-450x362.png" alt="" title="wphelp" /></a></p>

<p>Достаточно для того чтобы не лазая в кодекс вспомнить назначение и/или параметры функции.</p>

<p>Для остальных редакторов как сделать не знаю, потому-что ими не пользуюсь.</p>

<p><a href="http://roose.kz/download/wp_codex_chm.zip" title="WordPress Codex Documentation, 6.9 MiB">Скачать</a></p>
]]></description>
           <link>https://roose.kz/2011/07/03/offlajn-dokumentaciya-wordpress</link>
           <guid isPermaLink="true">https://roose.kz/2011/07/03/offlajn-dokumentaciya-wordpress</guid>
           <pubDate>Sun, 03 Jul 2011 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Сниппет. Отключить ненужные заголовки в Wordpress</title>
           <description><![CDATA[<p>Я решил поделиться с вами своими <em>сниппетами</em> для WordPress, вот первый:</p>

<script src="https://gist.github.com/roose/1933052.js"></script>

<p>Другие мои сниппеты можете посмотреть на <a href="https://gist.github.com/roose">https://gist.github.com/roose</a></p>
]]></description>
           <link>https://roose.kz/2011/05/30/disable-automatic-generated-wordpress-headers</link>
           <guid isPermaLink="true">https://roose.kz/2011/05/30/disable-automatic-generated-wordpress-headers</guid>
           <pubDate>Mon, 30 May 2011 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Wordpress.Поиск по категориям и дополнительным полям</title>
           <description><![CDATA[<p>По умолчанию WordPress ищет по заголовку и тексту записи, давайте попробуем научить его искать в определенной категории.</p>

<h2>Поиск в категории.</h2>

<p>Первым делом нужно добавить список категорий в форму поиска. Есть два способа, выбирайте который вам подходит:</p>

<ol>
<li>Создать шаблон формы поиска в папке с темой</li>
<li>Переопределить вывод формы своей функцией.</li>
</ol>

<h3>Создание шаблона формы поиска.</h3>

<p>Шаблон должен называться <code>searchform.php</code> и содержать следующий код(с вашими поправками):</p>

<pre><code>&lt;?php
    $dropdowncats = wp_dropdown_categories('echo=0&amp;show_option_none=Все категории');
    $form =
    '&lt;form id="searchform" role="search" method="get" action="' . home_url( '/' ) . '" &gt;
        &lt;div&gt;
            &lt;label for="s"&gt;Поиск&lt;/label&gt;
            &lt;input name="s" id="s" type="text" value="' . get_search_query() . '" /&gt;' . $dropdowncats .
            '&lt;input type="submit" class="submit" name="submit" id="searchsubmit" value="Найти" /&gt;
        &lt;/div&gt;
    &lt;/form&gt;';
    echo $form;
?&gt;
</code></pre>

<p>Давайте разберем что тут такое.
 Первым делом в переменную <code>$dropdowncats</code> заносим список категорий в виде списка <code>select</code>, потом в переменную <code>$form</code> всю нашу форму и выводим ее <code>echo $form;</code>
 Теперь вы можете вызвать эту форму в любом месте с помощью функции <code>get_search_form()</code></p>

<h3>Переопределение вывода формы своей функцией.</h3>

<p>Почти то же самое.</p>

<pre><code>&lt;?php
    function my_get_search_form() {
        do_action( 'get_search_form' );
        $dropdowncats = wp_dropdown_categories("echo=0&amp;show_option_none=Все категории");
        $form =
        '&lt;form id="searchform" role="search" method="get" action="' . home_url( '/' ) .  '" &gt;
            &lt;div&gt;
                &lt;label for="s"&gt;Поиск&lt;/label&gt;
                &lt;input name="s" id="s" type="text" value="' . get_search_query() . '" /&gt;' . $dropdowncats .
                '&lt;input type="submit" class="submit" name="submit" id="searchsubmit" value="Найти" /&gt;
            &lt;/div&gt;
        &lt;/form&gt;';
        echo apply_filters('get_search_form', $form);
    }
?&gt;
</code></pre>

<p>И теперь можно вызывать ее в любом месте: <code>my_get_search_form()</code></p>

<p>Ну вот, список категорий мы добавили:</p>

<p><img src="http://roose.kz/uploads/search_on_cats_and_meta_fields1.png" alt="Wordpress.Поиск по категориям и дополнительным полям" title="Wordpress.Поиск по категориям и дополнительным полям" /></p>

<p>Теперь сделаем чтобы оно работало. В файле <code>function.php</code> пишем:</p>

<pre><code>add_action('pre_get_posts', 'search_by_cat');
function  search_by_cat() {
    global $wp_query;
    if (is_search()) {
        $cat =  intval($_GET['cat']);
        if($cat&lt;0) $cat='';
        $wp_query-&gt;query_vars['cat'] = $cat;
    }
}
</code></pre>

<p>Итак, мы пишем функцию, которая проверяет страница ли поиска это, и берет с глобальной переменной <code>$_GET</code> категорию, так как пункт “Все категории” будет у нас иметь значение “-1″, то проверяем это дело и если никакая категория не выбрана, в <code>$cat</code> ничего не пишем.
 Далее мы эту нашу функцию вешаем на хук <code>pre_get_posts</code>, которая выполняется до запроса в базу данных. Тем самым мы заставляем WordPress к запросу по умолчанию добавить еще один параметр – <code>ID</code> категории из которой мы хотим произвести поиск.</p>

<h2>Поиск по дополнительным полям.</h2>

<p>Теперь давайте представим, что категории у нас – это список производителей автомобилей, типа: Mercedes, Nissan, Toyota и т.д. И у нас в дополнительных полях каждой записи есть ключ body и в нем может быть значения: sedan, coupe и т.д. Как же в этом случае?
 А в этом случае все так же, только одно отличие список нужно будет делать самому:</p>

<pre><code class="html">&lt;select id="body"  name="body"&gt;
    &lt;option  value="sedan"&gt;Седан&lt;/option&gt;
    &lt;option  value="coupe"&gt;Купе&lt;/option&gt;
    &lt;option value="etc"&gt;И  т.д.&lt;/option&gt;
&lt;/select&gt;
</code></pre>

<p>ну или что-то в этом роде.
 Вставляете список в шаблон формы поиска, ну а функция немного изменится:</p>

<pre><code class="php">add_action('pre_get_posts',  'search_by_tag');
function search_by_tag() {
    global $wp_query;
    if (is_search()) {
        $meta_key =  ‘body’;
        $meta_value = intval($_GET['body']);
        $wp_query-&gt;query_vars['meta_key'] = $meta_key;
        $wp_query-&gt;query_vars['meta_value']  = $meta_value;
    }
}
</code></pre>

<p>То есть так же как и с категорией, только параметра два: имя ключа и его значение.</p>

<h2>Сложный пример.</h2>

<p>Перейдем к примеру посложнее.
Окей, у нас в дополнительных полях будут цены 8-Q.
И форма поиска у нас будет такая:</p>

<pre><code class="php">&lt;?php
    $dropdowncats =  wp_dropdown_categories('echo=0&amp;show_option_none=Select category');
    $form =
        '&lt;form  role="search" method="get" action="' . home_url( '/' ) . '" &gt;
            &lt;div&gt;
                &lt;label  for="s"&gt;' . __('Search for:') . '&lt;/label&gt;
                &lt;input  type="text" value="' . get_search_query() . '" /&gt;' . $dropdowncats .
                '&lt;label for="pfrom"&gt;Цена  от:&lt;/label&gt;&lt;input  id="pfrom"&gt;
                &lt;label for="pto"&gt;до:&lt;/label&gt;
                &lt;input type="text"&gt;' . '&lt;input  id="searchsubmit" value="'. esc_attr__('Search') .'" /&gt;
            &lt;/div&gt;
        &lt;/form&gt;';
    echo $form;
?&gt;
</code></pre>

<p>И выглядеть она будет так:</p>

<p><img src="http://roose.kz/uploads/search_on_cats_and_meta_fields2.png" alt="Wordpress.Поиск по категориям и дополнительным полям" title="Wordpress.Поиск по категориям и дополнительным полям" /></p>

<p>И тут то нас поджидают неприятности(((, сделать как с категориями и доп.полями как выше мы не сможем(насколько я понял). Во-первых потому что дополнительные поля хранятся как текст, а во-вторых хотя и дополнительные поля можно сравнивать и есть даже у них параметр 'meta_compare' который может быть <code>=</code>,<code>!=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>&lt;</code>, или <code>&lt;=</code>, по умолчанию <code>=</code>, но он не может делать то, что мы хотим: сравнивать от и до.
Ладно пойдем другим путем, более сложным, но не менее интересным.
Идем в файл <code>function.php</code> и пишем функцию:</p>

<pre><code class="php">function is_price() {
    if( isset($_GET['pfrom']) &amp; isset($_GET['pto']) ) {
        if( !empty($_GET['pfrom']) &amp; !empty($_GET['pto']) )
            return  true;
        }
    return false;
}
</code></pre>

<p>Здесь мы проверяем установлены ли переменные и не пусты ли они. <code>$pfrom</code> – это "от", а <code>$pto</code> – это "до". Расшифровывается как price from, price to.</p>

<p>Далее пишем функцию и вешаем ее на <code>posts_join</code>:</p>

<pre><code class="php">function search_meta_join($join) {
    global $wpdb;
    if( is_search()  &amp;&amp; is_price() ) {
        $join .= " JOIN  $wpdb-&gt;postmeta ON $wpdb-&gt;posts.ID = $wpdb-&gt;postmeta.post_id ";
    }
    return $join;
}
add_filter('posts_join',  'search_meta_join');
</code></pre>

<p>Тут мы проверяем правда ли это страница поиска и наши переменные, и…
 И говорим WordPress, что мы хотим к его запросу к базе добавить данные из таблицы postmeta.
 Ну и последняя функция:</p>

<pre><code class="php">function search_meta_where($where) {
    global $wp_query,  $wp_version, $wpdb;
    if( !empty($wp_query-&gt;query_vars['s'])  &amp;&amp; is_price() ) {
        $pfrom = $_GET['pfrom'];
        $pto =  $_GET['pto'];
        $where .= " AND  $wpdb-&gt;postmeta.meta_key = 'price' AND $wpdb-&gt;postmeta.meta_value  &gt;= $pfrom AND $wpdb-&gt;postmeta.meta_value &lt;= $pto";
    }
    return $where;
}
add_filter('posts_where',  'search_meta_where');
</code></pre>

<p>Ну здесь мы опять проверяем поиск ли это, и установлены ли наши “от” и “до”. И указываем WordPress, какие нам именно данные из таблицы <code>postmeta</code> нужны. То есть например если у нас “от 10 000 до 20 000”, то так и пишем, больше или равно и меньше или равно: <code>$wpdb-&gt;postmeta.meta_value &gt;=  $pfrom AND $wpdb-&gt;postmeta.meta_value &lt;= $pto"</code></p>

<p>И все у нас прекрасно работает! Естественно при реальном внедрении может быть понадобится намного больше времени и возни, но программу минимум мы выполнили и теперь знаем как делать такие вещи.</p>
]]></description>
           <link>https://roose.kz/2010/06/24/wordpress-poisk-po-kategoriyam-i-dopolnitelnym-polyam</link>
           <guid isPermaLink="true">https://roose.kz/2010/06/24/wordpress-poisk-po-kategoriyam-i-dopolnitelnym-polyam</guid>
           <pubDate>Thu, 24 Jun 2010 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Cоздание шаблона страницы для карты сайта</title>
           <description><![CDATA[<p>Все знают что карта сайта это хорошо, но для создании карты сайта на WordPress обычно используется плагин. Это конечно прекрасно, но плагин таки кушает память, так что лучше обойтись без плагинов. Будем делать карту сайта с помощью шаблонов страницы.</p>

<p>Для начала создадим в папке с темой файл <code>template-sitemap.php</code></p>

<p>Потом откроем этот файл в редакторе и первым делом напишем следующие строки:</p>

<pre><code>&lt;?php

?&gt;
</code></pre>

<p>по этим строкам wordpress будет знать что <code>template-sitemap.php</code> это шаблон Sitemap.</p>

<p>далее пишем такую вот заготовку:</p>

<pre><code class="html">&lt;?php get_header(); ?&gt;
&lt;div id="content"&gt;
    &lt;div class="post"&gt;
        &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
        &lt;div class="entry"&gt;
        &lt;/div&gt;&lt;!-- &lt;div class="entry"&gt; --&gt;
        &lt;div class="entry"&gt;
        &lt;/div&gt;&lt;!-- &lt;div class="entry"&gt; --&gt;
        &lt;div class="entry"&gt;
        &lt;/div&gt;&lt;!-- &lt;div class="entry"&gt; --&gt;
    &lt;/div&gt;&lt;!-- &lt;div class="post"&gt; --&gt;
&lt;/div&gt;&lt;!-- &lt;div id="content"&gt; --&gt;
&lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;
</code></pre>

<p>Как вы видите у нас тут 3 пустых дива с классом <code>entry</code>, в первом будут страницы, во втором категории, а в третьем записи разбитые по категориям.</p>

<p>Начинаем с первого дива с классом <code>entry</code>. Внутри него пишем:</p>

<pre><code class="html">&lt;h3&gt;Страницы&lt;/h3&gt;
&lt;ul&gt;
    &lt;?php wp_list_pages('title_li=&amp;sort_column=menu_order'); ?&gt;
&lt;/ul&gt;
</code></pre>

<p>Мы тут выводим список страниц отсортированный по порядку(который вы задавали при создании страницы)</p>

<p>Во втором диве пишем:</p>

<pre><code class="html">&lt;h3&gt;Категории&lt;/h3&gt;
&lt;ul&gt;
    &lt;?php wp_list_categories('title_li=&amp;show_count=1'); ?&gt;
&lt;/ul&gt;
</code></pre>

<p>Здесь мы выводим список категорий с выводом количества записей в каждой категории, так же вы можете здесь указать еще один параметр <code>hierarchical=0</code>, для того чтобы категории выводились просто списком, без иерархии.</p>

<p>Третий див будет самый большой, в нем пишем:</p>

<pre><code>&lt;h3&gt;Записи по категориям&lt;/h3&gt;
&lt;?php
    $cats = get_categories();
    foreach ($cats as $cat) {
        $postincats = new WP_Query('cat='.$cat-&gt;cat_ID);
?&gt;
&lt;h4&gt;&lt;?php echo $cat-&gt;cat_name; ?&gt;&lt;/h4&gt;
&lt;?php if ($postincats-&gt;have_posts()) : ?&gt;
    &lt;ul&gt;
        &lt;?php while ($postincats-&gt;have_posts()) : $postincats-&gt;the_post(); ?&gt;
            &lt;li&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;
        &lt;?php endwhile; ?&gt;
    &lt;/ul&gt;
&lt;?php endif; ?&gt;
&lt;?php } ?&gt;
</code></pre>

<p>Тут мы заносим в переменную <code>$cats</code> все категории, далее в цикле для каждой категории мы создаем новый запрос и выводим записи этой категории.</p>

<p>Вот и все, шаблон для карты сайта создан. Теперь вы можете при создании страницы или при редактировании существующей выбрать шаблон – Sitemap.</p>

<p><a href="http://roose.kz/download/template-sitemap.zip" title="template-sitemap.zip, 1.2 KiB">Скачать</a></p>
]]></description>
           <link>https://roose.kz/2010/03/21/cozdanie-shablona-stranicy-dlya-karty-sajta</link>
           <guid isPermaLink="true">https://roose.kz/2010/03/21/cozdanie-shablona-stranicy-dlya-karty-sajta</guid>
           <pubDate>Sun, 21 Mar 2010 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Добавление дополнительных полей к профилю пользователя</title>
           <description><![CDATA[<p>В WordPress не только у записей есть дополнительные поля, но и у пользователей.</p>

<p>Зачем дополнительные поля пользователю? Ну к примеру есть у пользователя такие настройки как Контакты. В контактах есть поля: E-mail, Сайт и несколько дополнительных полей для IM-контактов. Но, нет например Twitter’a, Facebook’a и т.д.</p>

<p>Попробуем исправить это. Используем для примера добавление дополнительного поля – аккаунта в твиттере.</p>

<p>Открываем файл <code>functions.php</code></p>

<p>Добавляем туда следующий код:</p>

<pre><code>&lt;?php
    function action_show_user_profile($user) {
?&gt;
&lt;h3&gt;Дополнительные контакты&lt;/h3&gt;
&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;&lt;label for="twitter"&gt;Twitter&lt;/label&gt;&lt;/th&gt;
        &lt;td&gt;
            &lt;span&gt;http://twitter.com/&lt;/span&gt;
            &lt;input type="text" name="twitter" id="twitter" value="&lt;?php echo esc_attr(get_the_author_meta('twitter', $user-&gt;ID) ); ?&gt;" /&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;?php } ?&gt;
</code></pre>

<p>Эта функция будет добавлять дополнительные настройки при редактировании профиля пользователя.</p>

<p>и еще немного кода:</p>

<pre><code>&lt;?php
    function action_user_option_update($user_id) {
        update_usermeta($user_id, 'twitter', ( isset($_POST['twitter']) ? $_POST['twitter'] : '' ) );
    }
?&gt;
</code></pre>

<p>Эта функция будет сохранять наши новые настройки.</p>

<p>И наконец делаем несколько хуков:</p>

<pre><code>&lt;?php
    add_action('show_user_profile', 'action_show_user_profile');
    add_action('edit_user_profile', 'action_show_user_profile');
    add_action('personal_options_update', 'action_user_option_update');
    add_action('edit_user_profile_update', 'action_user_option_update');
?&gt;
</code></pre>

<p>Первый и второй хук навешивает нашу функцию</p>

<pre><code>action_show_user_profile()
</code></pre>

<p>на просмотр и редактирование профиля.
 Третий и четвертый хук навешивает функцию</p>

<pre><code>action_user_option_update()
</code></pre>

<p>на то действие которое происходит когда вы нажимаете на кнопку “Обновить информацию” при редактировании Вашего или чьего-либо профиля.</p>

<p>Вот что у нас получилось:</p>

<p><a href="http://roose.kz/uploads/extra_fileds.png"><img src="http://roose.kz/uploads/extra_fileds-450x174.png" alt="extra_fileds" title="extra_fileds" /></a></p>

<p>Теперь мы смело можем использовать это дополнительное поле при помощи следующего кода:</p>

<pre><code>echo 'http://twitter.com/'.get_the_author_meta('twitter');
</code></pre>

<p>которая выведет нам http://twitter.com/наш_твиттер
 Ну или полный вариант:</p>

<pre><code>echo '&lt;a href="http://twitter.com/'.get_the_author_meta('twitter').'"&gt;Follow me!&lt;/a&gt;';
</code></pre>

<p>Который выведет ссылку на наш аккаунт в твиттере с надписью – Follow me!</p>

<p>Вот и все.</p>
]]></description>
           <link>https://roose.kz/2010/01/21/dobavlenie-dopolnitelnyx-polej-k-profilyu-polzovatelya</link>
           <guid isPermaLink="true">https://roose.kz/2010/01/21/dobavlenie-dopolnitelnyx-polej-k-profilyu-polzovatelya</guid>
           <pubDate>Thu, 21 Jan 2010 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Как отключить корзину в WordPress 2.9</title>
           <description><![CDATA[<p>Наверное все заметили, что в WordPress 2.9 появилась новая фишка: <strong>Корзина.</strong></p>

<p>То есть вместо ссылки “Удалить” теперь ссылка “Поместить в корзину”</p>

<p><a href="http://roose.kz/uploads/trash1.PNG"><img src="http://roose.kz/uploads/trash1-450x91.PNG" alt="trash1" title="Корзина WordPress 2.9" /></a></p>

<p>По умолчанию корзина будет хранить удаленные объекты 30 дней. Для того чтобы отключить корзину, или изменить время хранения удаленных объектов, нужно в файле wp-config.php дописать:</p>

<p><code>define('EMPTY_TRASH_DAYS', 3);</code></p>

<p>для изменения времени хранения до 3 дней, или</p>

<p><code>define('EMPTY_TRASH_DAYS', 0);</code></p>

<p>для отключения корзины.</p>

<p>Вот так:</p>

<p><a href="http://roose.kz/uploads/trash2.PNG"><img src="http://roose.kz/uploads/trash2-449x245.PNG" alt="Редактирование wp-config.php" title="Редактирование wp-config.php" /></a></p>

<p>Ну и конечно же не забудьте отключить ревизии постов:</p>

<p><code>define('WP_POST_REVISIONS', FALSE);</code></p>

<p>ну или ограничить ревизии только до 3 штук:</p>

<p><code>define('WP_POST_REVISIONS', 3);</code></p>

<p>Вот так:<br />
<a href="http://roose.kz/uploads/trash3.PNG"><img src="http://roose.kz/uploads/trash3-449x255.PNG" alt="Отключаем PostRevisions" title="Отключаем PostRevisions" /></a></p>
]]></description>
           <link>https://roose.kz/2010/01/01/kak-otklyuchit-korzinu-v-wordpress-2-9</link>
           <guid isPermaLink="true">https://roose.kz/2010/01/01/kak-otklyuchit-korzinu-v-wordpress-2-9</guid>
           <pubDate>Fri, 01 Jan 2010 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Превью к записям или Post Thumbnail</title>
           <description><![CDATA[<p>Недавно вышел WordPress 2.9, и в этой версии наконец появилась функция которая делает картинки-превью к записям ну или по другому post thumbnail. Это функция</p>

<pre><code>the_post_thumbnail()
</code></pre>

<p>Но! Чтобы пользоваться этой функцией нужно немного добавить кода в вашу тему.</p>

<p>Во-первых надо добавить поддержку этих самых превью в вашу тему. Это делается следующим образом:</p>

<p>В файл functions.php вашей темы нужно добавить строчку</p>

<pre><code>add_theme_support('post-thumbnails');
</code></pre>

<p>И вот:</p>

<p><a href="http://roose.kz/uploads/thumb01.JPG"><img src="http://roose.kz/uploads/thumb01-450x252.jpg" alt="thumb01" title="thumb01" /></a></p>

<p>Во-вторых нужно добавить сам вывод превью в теме. Так как я все манипуляции производил над темой WordPress Default, в index.php в этом месте</p>

<pre><code>&lt;div class="entry"&gt;
&lt;?php the_content(__('Read the rest of this entry »', 'kubrick')); ?&gt;
&lt;/div&gt;
</code></pre>

<p>дбавим следующий код:</p>

<pre><code>&lt;div class="thumb"&gt;
    &lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_post_thumbnail('thumbnail'); ?&gt;&lt;/a&gt;
&lt;/div&gt;
</code></pre>

<p>и в css добавим</p>

<pre><code>.thumb {
 float: left;
 padding: 0 10px;
}
</code></pre>

<p>Так все вместе получилось:</p>

<pre><code>&lt;div class="entry"&gt;
    &lt;div class="thumb"&gt;
        &lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_post_thumbnail('thumbnail'); ?&gt;&lt;/a&gt;
    &lt;/div&gt;
    &lt;?php the_content(__('Read the rest of this entry »', 'kubrick')); ?&gt;
&lt;/div&gt;
</code></pre>

<p>Или так:</p>

<p><a href="http://roose.kz/uploads/thumb.JPG"><img src="http://roose.kz/uploads/thumb-450x348.jpg" alt="thumb" title="thumb" /></a></p>

<p>Вот вроде бы и все, но, вы видели я при использовании функции не просто написал</p>

<pre><code>the_post_thumbnail()
</code></pre>

<p>а вот так:</p>

<pre><code>&lt;?php the_post_thumbnail('thumbnail'); ?&gt;
</code></pre>

<p>Что это значит? Это значит что функция может принимать параметры, аж 2 штуки. 1 - это <code>$size</code> / размер, 2 - <code>$attr</code> / аттрибуты.</p>

<p><code>$size</code> может быть <code>thumbnail, medium, large</code>, ну и без параметров будет <code>full</code>.</p>

<p><code>$attr</code> это аттрибуты картинки например я использовал этот параметр так:</p>

<pre><code>&lt;?php the_post_thumbnail('thumbnail', array('title' =&gt; get_the_title())); ?&gt;
</code></pre>

<p>т.е. подсказкой картинки будет название записи.</p>

<p>Можно еще так:</p>

<pre><code>&lt;?php the_post_thumbnail('thumbnail', array('class' =&gt; 'thumb')); ?&gt;
</code></pre>

<p>В этом случае у картинки будет класс <code>thumb</code>.</p>

<p>Вот теперь вроде бы все =)</p>
]]></description>
           <link>https://roose.kz/2009/12/20/prevyu-k-zapisyam-ili-post-thumbnail</link>
           <guid isPermaLink="true">https://roose.kz/2009/12/20/prevyu-k-zapisyam-ili-post-thumbnail</guid>
           <pubDate>Sun, 20 Dec 2009 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title>Центрирование горизонтального меню, способ 1, поля</title>
           <description><![CDATA[<p>Есть несколько способов центрирования горизонтального меню, центрирование горизонтального меню с помощью полей(margins) и плавающих блоков наверное самое простое из них.</p>

<p>Мы будем использовать только чистый CSS и HTML.</p>

<p>CSS</p>

<pre><code>.menu {
    width: 100%;
    height: 38px;
    float: left;
    clear: both;
}
.menu ul {
    margin: 0 auto;
    list-style: none;
    width: 400px;
}
.menu ul li {
    float: left;
    background: #E6E6E5;
    line-height: 30px;
}
.menu ul li a {
    display: block;
    padding: 4px 14px;
    color: #000;
}
.menu ul li a:hover {
    background: #646464;
    color: #fff;
}
.menu .active a {
    background: #646464;
    color: #fff;
    text-decoration: none;
}
</code></pre>

<p>HTML</p>

<pre><code>&lt;div class="menu"&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;Главная&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Новости&lt;/a&gt;&lt;/li&gt;
        &lt;li class="active"&gt;&lt;a href="#"&gt;О компании&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Контакты&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;
</code></pre>

<p>Теперь давайте разберемся что такое плавающий блок.</p>

<p><a href="http://roose.kz/uploads/hcmm01.jpg"><img src="http://roose.kz/uploads/hcmm01-450x121.jpg" alt="hcmm01" title="hcmm01" /></a></p>

<p>Это неплавающий блок, неплавающий блок расширяется до 100% родительского элемента.
 В нашем случае родительский элемент это вся страница.</p>

<p><a href="http://roose.kz/uploads/hcmm02.jpg"><img src="http://roose.kz/uploads/hcmm02-450x121.jpg" alt="hcmm02" title="hcmm02" /></a></p>

<p>Если мы теперь сделаем блок плавающим влево, то заметьте он автоматически сожмется до ширины дочернего элемента. В нашем случае дочерний элемент это текст div.</p>

<p>Теперь сделаем обычное прижатое влево меню.</p>

<p><a href="http://roose.kz/uploads/hcmm03.jpg"><img src="http://roose.kz/uploads/hcmm03-450x121.jpg" alt="hcmm03" title="hcmm03" /></a></p>

<ol>
<li>Мы сделаем блок menu плавающим влево, но мы установим ему ширину равную 100%, из-за этого его ширина станет равна ширине страницы.</li>
<li>Все элементы li которые находятся внутри элемента ul делаем плавающими влево. Из-за чего они сжимаются до  ширины текста в них и выстраиваются по горизонтали. Так же мы уберем стиль элемента li и по желанию оформляем его как хотим.</li>
</ol>

<p>Превращаем прижатое влево меню в центрированное.</p>

<p><a href="http://roose.kz/uploads/hcmm04.jpg"><img src="http://roose.kz/uploads/hcmm04-450x121.jpg" alt="hcmm04" title="hcmm04" /></a></p>

<p>Что мы делаем:</p>

<ol>
<li>Устанавливаем ширину элемента menu 400px.</li>
<li>Устанавливаем для элемента menu поля: margin: 0 auto. Ширина menu вычитается из доступной ширины окна, и разница равномерно распределяется между правым и левым полями</li>
</ol>

<p>Плюсы и минусы.</p>

<p>+Работает во всех браузерах.</p>

<p>-&nbsp;Если вдруг количество пунктов меню увеличится, ширину элемента ul нужно будет задавать вручную.</p>

<p><a href="http://roose.kz/uploads/menu1.html">Пример.</a></p>
]]></description>
           <link>https://roose.kz/2009/08/18/centrirovanie-gorizontalnogo-menyu-sposob-1-polya</link>
           <guid isPermaLink="true">https://roose.kz/2009/08/18/centrirovanie-gorizontalnogo-menyu-sposob-1-polya</guid>
           <pubDate>Tue, 18 Aug 2009 00:00:00 +0000</pubDate>
        </item>
        <item>
           <title></title>
           <description><![CDATA[]]></description>
           <link></link>
           <guid isPermaLink="true"></guid>
           <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
        </item>
    </channel>
</rss>