Рубрика: RSS

Как изменить частоту обновления виджета «RSS»?

Стандартный виджет RSS

Стандартный виджет "RSS" не позволяет задать время обновления указанной RSS-ленты. По умолчанию, данный виджет проверяет обновления RSS-ленты каждые 43200 секунд (12 часов). Это время можно уменьшить или увеличить с помощью следующего кода, вставленного в файл functions.php вашей темы:

Как добавить подпись к записям в RSS без плагинов?

Подпись в RSS ленте

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

Как добавить произвольные типы записей в главную RSS ленту?

WordPress по умолчанию не включает в основную RSS ленту сайта записи произвольных типов (в ней публикуются только стандартные записи - 'post'). Это можно исправить с помощью небольшого сниппета кода, добавленного в файл functions.php вашей темы:

//добавление произвольных типов в RSS ленту start
function wph_feed_all($vars) {
    if (isset($vars['feed']) && !isset($vars['post_type']))
        $vars['post_type'] = array('post', 'custom_type1', 'custom_type2');
    return $vars;
}
add_filter('request', 'wph_feed_all');
//добавление произвольных типов в RSS ленту end

Где 'custom_type1' и 'custom_type2' это ваши произвольные типы записей. С помощью этого же кода можно добавить в RSS ленту еще и страницы вашего сайта. Для этого включите в указанный код тип 'page' и все страницы вашего сайта будут попадать в RSS ленту наравне с прочими записями.

Как выводить записи в RSS до тега <!—more—>?

Запись в RSS до тега more

В WordPress уже очень давно выпилили возможность выводить в RSS текст записей до тега <!--more--> (тег "Далее" в визуальном редакторе), оставив для вывода лишь два варианта: "Полный текст" и "Анонс". При выводе в RSS полного текста записи вы рискуете тем, что подписчики будут читать ваши статьи в своей RSS-читалке, не переходя на ваш сайт. При выводе же анонсов весьма велика вероятность, что вы не сможете заинтересовать читателей, так как анонс это маленький огрызок текста с вырезанной разметкой (картинок в анонсе не будет). Вот и выходит, что наилучшим вариантом для всех будет вывод в RSS текста записи до тега <!--more-->.

Как задержать публикацию записей в RSS?

WordPress обновляет RSS ленты сайта немедленно после публикации записей. Это плохо тем, что лишает вас возможности быстро исправить опечатку в только что опубликованной записи. То есть, конечно, опечатку вы исправите, и запись будет обновлена в RSS ленте тоже. Беда тут только в том, что многие RSS читалки кэшируют RSS ленты и не будут их обновлять без появления в них нового контента (то есть новой записи). Чтобы избежать такой ситуации можно сделать задержку публикации записи в RSS с помощью такого кода в файле functions.php вашей темы:

//задержка публикации записей в RSS start 
function whp_feed_pause($where) {
    global $wpdb;
    if (is_feed()) {
         $now = gmdate('Y-m-d H:i:s');
         $wait = '5';
         $device = 'MINUTE';
         $where .= " AND TIMESTAMPDIFF($device, 
         $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'whp_feed_pause'); 
//задержка публикации записей в RSS end

Где число 5 это количество минут задержки перед публикацией записей в RSS.

Как вывести миниатюру записи в RSS ленте?

Во многих темах активно используется "Миниатюра записи", назначаемая при добавлении записи. Однако, установленная миниатюра не является непосредственно частью записи и требует отдельного кода вывода. В темах миниатюру выводят с помощью функции the_post_thumbnail. Недостаток такого добавления и вывода миниатюры записи состоит в том, что в RSS-ленту запись попадает без миниатюры, что зачастую бывает неприемлемо. Исправить данную ситуацию просто, для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//добавление миниатюры записи в RSS start
function thumbnail_in_feed($content) {
    global $post;
    if(is_feed()) {
        if (has_post_thumbnail($post->ID)){
            $output = get_the_post_thumbnail($post->ID, 'medium', 
            array('style' => 'float:right; margin:0 0 10px 10px;'));
            $content = $output . $content;
        }
    }
    return $content;
}
add_filter('the_content', 'thumbnail_in_feed');
//добавление миниатюры записи в RSS end

Размеры миниатюры в RSS-ленте можно менять:

Как перенаправить RSS-ленту на FeedBurner?

Практически все веб-мастеры, у которых не отключены RSS-ленты, "прожигают" их на сервисе FeedBurner. Как правило, перенаправление RSS-лент на сервис FeedBurner осуществляется плагинами вроде FD Feedburner Plugin, однако это можно сделать и без установки лишних плагинов.

Добавьте в файл .htaccess в корне вашего сайта код:

<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ http://feeds.feedburner.com/wphook [L,NC,R=302]
</ifmodule>

Добавить этот код можно прямо в начало файла .htaccess, убедитесь только, что указали в нем верную ссылку на свой фид. После этого при запросе ваших RSS-лент будет осуществляться перенаправление на сайт FeedBurner.

12