Compartilhamos, anteriormente, sobre como você pode controlar o rodapé do Feed RSS do WordPress com um uso de um plugin bem conhecido chamado RSS Footer do Joost. Apesar de ser um excelente plugin, é muito limitado. Você só pode adicionar texto ao rodapé e, é sempre o mesmo texto apresentado no rodapé de cada post. Mas, e se você quisesse exibir um texto diferente para cada post em seu RSS? E se você quisesse que posts específicos tivessem um título diferente nos Feeds RSS? E se você quisesse ainda exibir um campo personalizado específico em seus Feeds RSS? Bem, por isso estamos escrevendo este artigo que irá mostrar a você como adicionar qualquer tipo de conteúdo em seus Feeds RSS do WordPress. Este hack irá colocá-lo no controle dos Feeds RSS do seu Site WordPress e você poderá manipulá-lo da maneira que quiser.
Nota: Este hack não é para iniciantes. Apenas os usuários que sabem trabalhar com a edição do arquivo functions.php e tem algum conhecimento de php devem tentar isso. Usuários iniciantes devem usar o plugin mencionado no artigo anterior, ou consultar profissionais como nós para fazer isso por você.
#01. Adicionando um campo personalizado para o Rodapé do RSS do seu WordPress
Neste primeiro exemplo, vamos mostrar como você pode usar o campo personalizado para exibir o texto/objeto específico em seu Feed RSS do WordPress. Este truque permite-lhe mostrar um texto diferente, anúncio, imagem ou qualquer outra coisa para cada post. Primeiro, abra seu functions.php e cole os seguintes códigos nas tags php:
function wp24h_postrss($content) { global $wp_query; $postid = $wp_query->post->ID; $rsscustom = get_post_meta($postid, 'rsscustom', true); if(is_feed()) { if($rsscustom !== '') { $content = $content."<br /><br /><div>".$rsscustom."</div> "; } else { $content = $content; } } return $content; } add_filter('the_excerpt_rss', 'wp24h_postrss'); add_filter('the_content', 'wp24h_postrss');
Agora, a maioria de vocês deve estar se perguntando como esse código está funcionando. Então aqui vai uma explicação. Nós criamos uma função chamada “wp24h_postrss” que roda uma wp_query global para procurar em cada post, se um campo personalizado chamado “rsscustom” foi definido. Se RSS Custom foi definido, então ele mostra o valor após o conteúdo do post. Se não houver um campo personalizado definido, então a função, por padrão, mostra apenas o conteúdo do post e nada mais. Usamos a variável “$content” para exibir o conteúdo. Estamos usando a função if(is_feed) e adicionando o texto personalizado ou outros conteúdos para o conteúdo principal do post que você pode ver pelo segundo filtro. Mas isso só vai ser exibido nos Feeds RSS devido o uso da função if (is_feed). Ao fazê-lo desta forma, evitaremos todos os problemas de compatibilidade.
Alguns de vocês podem pensar: Mas você acabou de fazer o que o plugin RSS Footer faz, com uma função. Sim e não. Sim, nós estamos adicionando o código no rodapé do post, mas este texto não é exatamente o mesmo texto para cada post. É diferente, porque você especifica um texto diferente para cada post através de campos personalizados.
#02. Adicionando um texto adicional para os títulos de posts no RSS
Será que o seu blog tem Guest Post, posts patrocinados e reviews? Bem, se você tiver isso, então você vai achar isso muito útil. Alguns blogueiros têm um estilo personalizado para exibir cada tipo de post, a fim de que seus usuários possam distingui-los. Contudo, quando esses posts são vistos em um leitor, todos os estilos são perdidos. Ou seja, é quando este truque vem a calhar. Neste truque, vamos adicionar qualquer texto antes ou depois do título.
Por exemplo, se o seu título era “Tema Comercial do WordPress – StudioPress” e este for um post patrocinado, então você pode mudá-lo para” Post Patrocinado: Tema Comercial do WordPress – StudioPress “. Mesmo se alguém que alguém tenha escrito um guest Post, etc.
Para isso, abra o arquivo functions.php e adicione o seguinte código lá:
function wp24h_titlerss($content) { global $wp_query; $postid = $wp_query->post->ID; $gpost = get_post_meta($postid, 'guest_post', true); $spost = get_post_meta($postid, 'sponsored_post', true); if($gpost !== '') { $content = 'Guest Post: '.$content; } elseif ($spost !== ''){ $content = 'Post Patrocinado: '.$content; } else { $content = $content; } return $content; } add_filter('the_title_rss', 'wp24h_titlerss');
Explicação para o código: Estamos usando a função chamada “wp24h_titlerss” que executa uma wp_query global para procurar em cada post, se contém $gpost ou $spost. Estes dois elementos estão, basicamente, procurando dois campos personalizados específicos chamados “guest_post” ou “sponsored_post“. Se algum tiver esses campos personalizados adicionados com o valor “true“, então o código irá adicioná-lo no texto. Se não, você só vai ver o título normal. Você pode ver que, primeiro, o código verifica se $gpost é “true“, se não, se $spost é “true“. Se nenhum dos dois estiver definido, então ele exibe o conteúdo normal. Mas se qualquer um deles for “true“, então exibe o texto diferente que você especificar aqui. Estamos usando a string $content para exibir o título do post.
Agora que acabou de exibir campos personalizados no título, você quer exibir o nome da Categoria em cada título? Bem, então você deve simplesmente colar o seguinte código no seu arquivo functions.php:
function wp24h_cattitlerss($content) { $postcat = ""; foreach((get_the_category()) as $cat) { $postcat .= ' ['.$cat->cat_name . ']'; } $content = $content.$postcat; return $content; } add_filter('the_title_rss', 'wp24h_cattitlerss');
Explicação: Estamos usando a função “wp24h_cattitlerss” para obter o ID da categoria para cada post e, em seguida, mostrando-a ao lado do título. Então, se o título fosse “Como usar o plugin Gravity Forms” agora ficaria “Como usar o plugin Gravity Forms [Plugins]”. Você pode ver que não há if neste código. Usamos $content para o título principal e a variável $postcat para definir o nome da categoria. Você pode reorganizar isso, se quiser.
#03. Adicionando mesmo texto em todos os posts no RSS
Se você quiser apenas adicionar o mesmo texto, então, você pode usar o plugin chamado RSS Footer by Joost, porque é mais fácil assim. Mas, se você quiser fazer isso por você mesmo, é assim que se faz. Abra seu arquivo functions.php adicione o seguinte código:
function wp24h_postrss($content) { if(is_feed()){ $content = 'Este post foi escrito por Asllan Maciel '.$content.' Veja em WP24Horas'; } return $content; } add_filter('the_excerpt_rss', 'wp24h_postrss'); add_filter('the_content', 'wp24h_postrss');
Explicação: Estamos chamando uma função “wp24h_postrss para adicionar em cada post um conteúdo antes do post dizendo “Este post foi escrito por Asllan Maciel” e após o conteúdo “Veja em WP24Horas“. Mas nós adicionamos a função if(is_feed), por isso, só vai ser exibido em Feeds RSS.
Isso será muito útil se você quiser vender anúncios em lugares específicos dos RSS ou simplesmente quiser ter mais controle sobre seus Feeds RSS.
Fonte: Usamos o plugin RSS Footer by Joost para várias orientações ao escrever este tutorial. Parte do hack foi baseado em um site de tutoriais francês e nós adicionamos algumas outras variáveis, dando-lhe a capacidade de serem títulos customizados por campos personalizados.