Os RSS Feeds de um blog são uma das melhores formas de marketizar conteúdos, mostrar publicidade ou outro tipo de conteúdos que possam levar os seus subscritores a tomarem determinadas acções. Na Escola Dinheiro, por exemplo, são já mais de 10,000 subscritores que todos os dias lêem os RSS Feeds do blog. Já imaginou o potencial que esses RSS Feeds têm?

O RSS é uma das melhores formas de levar os conteúdos do seu blog ao seu público, especialmente quando se utilizam as subscrições por email. Existem vários truques e dicas para tornar os seus RSS Feeds mais atrativos e com outro tipo de opções, aumentar os seus ganhos e ajudar os seus leitores a divulgarem os conteúdos. Neste artigo vamos analisar então 10 truques e dicas para os RSS Feeds do seu Blog.

1. MOSTRAR THUMBNAILS DOS ARTIGOS NO FEED

A grande maioria dos templates wordpress dos dias de hoje, fazem uso de thumbnails (miniaturas) ou imagens em destaque, mas estas imagens não são incluídas nos RSS Feeds por padrão. Para fazer com que elas apareçam nos seus RSS Feeds, adicione o seguinte código ao seu ficheiro functions.php.

// show post thumbnails in feeds
function diw_post_thumbnail_feeds($content) {
	global $post;
	if(has_post_thumbnail($post->ID)) {
		$content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;
	}
	return $content;
}
add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

2. ATRASE A PUBLICAÇÃO DOS RSS FEEDS

Quantas vezes você não carregou no botão “Publicar” ao invés do botão “Salvar Rascunho” ou “Pré-Visualizar” no artigo em que estava a trabalhar, e teve de correr a ir editá-lo para que ele voltasse novamente para os rascunhos? Ou então porque você reparou que o artigo tinha um erro grave que precisava de ser resolvido? O que este truque faz é atrasar a publicação do artigo nos seus RSS Feeds. Para o fazer, adicione o seguinte código ao seu ficheiro functions.php e ele irá atrasar os seus RSS Feeds em 5 minutos:

* /**
* * puplish the content in the feed later
* * $where ist default-var in WordPress (wp-includes/query.php)
* * This function an a SQL-syntax
* */
* function publish_later_on_feed($where) {
* global $wpdb;
*
* if ( is_feed() ) {
* // timestamp in WP-format
* $now = gmdate('Y-m-d H:i:s');
*
* // value for wait; + device
* $wait = '5'; // integer
*
* // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
* $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
*
* // add SQL-sytax to default $where
* $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
* }
* return $where;
* }
*
* add_filter('posts_where', 'publish_later_on_feed');

3. INSERIR QUALQUER COISA NOS RSS FEEDS

Você pode usar o seguinte truque para inserir um link para o seu site ou blog, publicidade, ícones para mídias sociais, etc. Basicamente qualquer coisa que você deseje. Adicione o seguinte código ao ficheiro functions.php do seu template:

<?php
function insertAds($content) {
    $content = $content.'<hr /><a href="http://www.escolawp.com">Já visitou a Escola WordPress hoje?</a><hr />';
    return $content;
}
add_filter('the_excerpt_rss', 'insertAds');
add_filter('the_content_rss', 'insertAds');
?>

Neste exemplo, o HTML customizado e inserido nos Feeds é este “<hr /><a href=”http://www.escolawp.com”>Já visitou a Escola WordPress hoje?</a><hr />”
Altere o código para aquilo que desejar.

4. EXCLUA UMA CATEGORIA DOS SEUS RSS FEEDS

Este truque é muito útil caso você tenha uma categoria no seu blog para notícias ou algo que pretende manter fora dos seus RSS Feeds. Irá necessitar de encontrar o ID da categoria que pretende excluir. Para o fazer, vá no painel de administração do seu blog WordPress e à secção “Posts” > “Categorias” e passe o rato por cima do nome da categoria que pretende excluir, olhe para a barra de estado do seu browser (no fundo do browser), e procure pelo código &tag_ID=10 onde o 10 é o ID da categoria. Depois copie e cole o seguinte código para dentro do ficheiro functions.php do seu template:

function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','10'); //Don't forget to change the category ID =^o^=
    }
return $query;
}

add_filter('pre_get_posts','myFilter');

5. CRIE CONTEÚDOS APENAS PARA OS SUBSCRITORES DE RSS FEEDS

Se você gostava de oferecer conteúdo exclusivo para os seus subscritores de RSS Feeds (talvez como um incentivo à aubscrição?) você irá necessitar de criar uma categoria especificamente para os subscritores. Encontre o ID da categoria (ver ponto nº4) e depois copie e cole o seguinte código para o ficheiro functions.php do seu template:

<?php  
function excludeCategory($query)  
{  
    if($query->is_home | $query->is_archive )  
    $query->set('cat','-3');  
    return $query;  
}  
add_filter('pre_get_posts', 'excludeCategory');  
?>

Agora, cada vez que adicionar um novo artigo a esta categoria, ele não irá aparecer na homepage do seu blog, nem na página de categoria, nem nas tags ou nos arquivos. Irá aparecer apenas e exclusivamente nos seus RSS Feeds.

6. MOSTRE QUALQUER RSS FEED NO SEU BLOG WORDPRESS

Com este truque, você pode utilizar uma funcionalidade do WordPress para puxar qualquer RSS Feed para o seu site ou blog em WordPress também. Se desejar pode puxar os RSS Feeds do seu fórum, Feeds de notícias, etc. Copie e cole o seguinte código dentro do ficheiro onde pretende mostrar esses RSS Feeds:

<?php include_once(ABSPATH . WPINC . '/rss.php');
wp_rss('http://www.escolawp.com/feed', 3); ?>

7. MOSTRAR A MÉDIA DE ASSINANTES DO SEU BLOG

Se você está usando o Feedburner para queimar os seus RSS Feeds, você irá reparar que o contador de subscritores apenas mostra o número de subscritores que leram suas matérias no dia anterior. No entanto, se você pretender mostrar a média dos últimos 7 dias, existe um truque para isso. Copie e cole o seguinte código para o ficheiro functions.php do seu template:

function get_average_readers($feed_id,$interval = 7){
	$today = date('Y-m-d', strtotime("now"));
	$ago = date('Y-m-d', strtotime("-".$interval." days"));
	$feed_url="https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=".$feed_id."&dates=".$ago.",".$today;
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_URL, $feed_url);
	$data = curl_exec($ch);
	curl_close($ch);
	$xml = new SimpleXMLElement($data);
	$fb = $xml->feed->entry['circulation'];

	$nb = 0;
	foreach($xml->feed->children() as $circ){
		$nb += $circ['circulation'];
	}

	return round($nb/$interval);
}

E depois cole o seguinte código onde pretende mostrar sua média de assinantes, trocando o escolawp pelo seu ID do Feedburner:

<?php
$nb = get_average_readers('escolawp');
echo "Temos ".$nb." subscritores!";
?>

8. SEPARAR OS RSS FEEDS PARA CUSTOM POST TYPES

Se gostaria de linkar um RSS Feed em separado para um determinado custom post type, utilize o seguinte código:

http://www.escolawp.com/feed/?post_type=livros

Se desejar poderá ainda criar um Feed para um custom post type e uma taxonomia:

http://www.escolawp.com/feed/?post_type=livros&genre=romance

9. DESLIGAR OS RSS FEEDS COMPLETAMENTE

Se está criando um site que não usa RSS Feeds e pretende desligá-los por completo, isso é bastante fácil – bastando copiar e colar o seguinte código para o ficheiro functions.php do seu template:

/**
* disable RSS feed
*/
function wp_disable_feed() {
   wp_die( __('Sorry, no feeds available, return to <a href="'. get_bloginfo('url') .'">homepage</a>') );
}

add_action('do_feed', 'wp_disable_feed', 1);
add_action('do_feed_rdf', 'wp_disable_feed', 1);
add_action('do_feed_rss', 'wp_disable_feed', 1);
add_action('do_feed_rss2', 'wp_disable_feed', 1);
add_action('do_feed_atom', 'wp_disable_feed', 1);

10. CRIE O SEU PRÓPRIO RSS FEED CUSTOMIZADO

Se você necessita de um RSS Feed customizado, por exemplo, um feed indexando apenas algumas categorias + tags, ou se você redireccionada todos os RSS Feeds do WordPress para o Feedburner mas ainda assim pretende conseguir puxar um Feed para uma categoria específica, a solução passa por usar um template de página. Copie, cole e guarde o seguinte código num ficheiro chamadp “custom-feed.php” e carregue-o para a diretoria do seu template. Depois, crie uma nova página no WordPress e escolha o template “custom-feed.php” e guarde-a.

<?php
/*
Template Name: Custom Feed
*/

$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>Atualizações de Email</title>
  <link>http://www.escolawp.com/</link>
  <description>Os últimos artigos do blog EscolaWP.com.</description>
  <language>pt-BR</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>geral@escolawp.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/>Continue a ler: <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>

Até já e bons truques!