Создание пользовательских RSS-каналов в WordPress

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Лента RSS — очень полезная штука, и, конечно, очень популярная. У меня, например, в гуглоридере более 200 лент, чтобы попытаться уследить за всем 🙂 WordPress самостоятельно создает рсс-ленту, «добротную» в 99% случаев. Но можно ли создать собственную, кастомизированную rss-ленту? Читаем далее, чтобы выяснить!

Если вам нужна собственная лента, как например, канал, отправляющий только некоторые рубрики+теги, или если вы перенаправили все ленты вордпресса в Feedburner, но все все равно хотите запустить ленту по одной рубрике… Решение — использовать шаблон для страницы.
Вставьте следующий код в новый файл, сохраните его под именем custom-feed.php и загрузите в папку своей темы.
Сделав это, просто создайте новую страницу в админе вордпресса (но ничего на ней не пишите), и выберите custom-feed.php в качестве шаблона для страницы.

<?php
/*
Шаблон: Собственная RSS-лента
*/
 
$numposts = 5;
 
function yoast_rss_date( $timestamp = null ) {
  $timestamp = ($timestamp==null) ? time() : $timestamp;
  echo date(DATE_RSS, $timestamp);
}
 
function yoast_rss_text_limit($string, $length, $replacer = '...') { 
  $string = strip_tags($string);
  if(strlen($string) > $length) 
    return (preg_match('/^(.*)W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;   
  return $string; 
}
 
$posts = query_posts('showposts='.$numposts);
 
$lastpost = $numposts - 1;
 
header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0"?>';
?><rss version="2.0">
<channel>
  <title>Yoast E-mail Update</title>
  <link>http://yoast.com/</link>
  <description>The latest blog posts from Yoast.com.</description>
  <language>en-us</language>
  <pubDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></pubDate>
  <lastBuildDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></lastBuildDate>
  <managingEditor>joost@yoast.com</managingEditor>
<?php foreach ($posts as $post) { ?>
  <item>
    <title><?php echo get_the_title($post->ID); ?></title>
    <link><?php echo get_permalink($post->ID); ?></link>
    <description><?php echo '<![CDATA['.yoast_rss_text_limit($post->post_content, 500).'<br/><br/>Keep on reading: <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.']]>';  ?></description>
    <pubDate><?php yoast_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate>
    <guid><?php echo get_permalink($post->ID); ?></guid>
  </item>
<?php } ?>
</channel>
</rss>
VN:F [1.9.22_1171]

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии