Back-End

14 fev, 2011

10 truques e dicas para usar nos RSS Feeds

Publicidade

RSS Feeds é uma ótima forma de marketizar conteúdos, mostrar publicidade ou outro
tipo de conteúdo que possa levar os seus assinantes a tomarem
determinadas ações. Já imaginou o potencial que esses RSS Feeds têm?

O RSS é uma das melhores formas de levar
os conteúdos ao seu público, especialmente quando se
utilizam as assinaturas por e-mail. 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.

01. Mostrar thumbnails dos artigos no Feed

A grande maioria dos templates wordpress fazem uso de thumbnails (miniaturas) ou de imagens em
destaque, mas essas 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 arquivo 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” em vez do botão “Salvar Rascunho” ou “Pré-Visualizar” no
artigo em que estava trabalhando, e teve de correr para 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 arquivo
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, publicidade, ícones para mídias sociais, etc. Adicione o seguinte código ao arquivo 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 para notícias ou algo que pretende manter
fora dos seus RSS Feeds. Você vai precisar encontrar o ID da categoria
que pretende excluir. Para o fazer, vá no painel de administração do seu
WordPress e à seção “Posts” > “Categorias” e passe o mouse 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 arquivo 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 assinantes do RSS Feeds

Se você gostava de oferecer conteúdo
exclusivo para os seus assinantes de RSS Feeds, será necessário criar uma categoria
especificamente para os assinantes. Encontre o ID da categoria (ver
ponto nº4) e depois copie e cole o seguinte código para o arquivo
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 site,
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

Com este truque, você pode utilizar uma
funcionalidade do WordPress para puxar qualquer RSS Feed para o seu site
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 arquivo 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

Se você está usando o Feedburner para
queimar os seus RSS Feeds, você irá reparar que o contador de assinantes apenas mostra o número de assinantes 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 arquivo 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 é fácil –
basta copiar e colar o seguinte código para o arquivo 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ê redirecionada 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 arquivo chamadp “custom-feed.php”
e carregue-o para o diretório 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>

É isso! Não deixem de comentar!

Até a próxima!