Já faz tempo que estou para escrever sobre isso, então vamos cumprir a tarefa antes que o ano acabe: mostrar e falar dos melhores plugins WordPress segundo minhas necessidades mais comuns, os 5 plugins indispensáveis. São os que, por mais que tenha procurado, ainda não descobri como eliminar mantendo as funções, por serem uma combinação perfeita de utilidade com facilidade de uso. Reduzir plugins é prioridade, mas às vezes pode ser bem complicado dar cabo de alguns, como esses.
Pra compensar e manter nossa tradição “anti-plugin”, vou mostrar também 5 plugins dispensáveis, que muita gente usa sem saber que podem ser substituídos por umas poucas linhas de código dentro do tema. Entre eles, os manjados plugins de paginação, criação de breadcrumbs (trilhas de navegação) e posts relacionados.
Indispensáveis
Akismet
Ainda está por aparecer plugin mais útil e indispensável que o Akismet (se você conhece algum, me avise!). O Akismet filtra quantidades absurdas de spam enviado para nossos blogs, é só conferir as estatísticas no painel do blog para ver. Ele é tão útil que já acompanha o pacote de download do WordPress, você só precisa configurar a conta e ativá-lo.
Advanced Custom Fields
Depois que descobri esse plugin, numa mais precisei de códigos para criar campos personalizados que fossem além do padrão do WordPress. Com ele você pode definir regras de onde os campos aparecem: só em posts, ou páginas, ou tipos de post, ou posts que contenham certo termo. É muito flexível.
Pode ainda criar campos de texto, link, botões tipo radio, checkbox, campos de imagem (para depois chamar o url ou objeto da imagem), etc. Tem documentação muito completa no site e ainda conta com extensões premium, mas a versão básica sozinha já é excelente.
Contact Form + Captcha
Forms de contato são perfeitamente possíveis de serem substituídos por formmails e scripts similares, mas dá um trabalhão, é chato de configurar e ajustar visual, páginas de redirect… Fora a preocupação com spam pelo formulário – se não colocar um captcha, seu e-mail será inundado com lixo tipo “compre viagra”, “aprenda a jogar na loteria”, “você tem milhões em nossa conta”, etc. Estou falando porque já aconteceu comigo.
Esse kit dos plugins Contact Form + Captcha, que são do mesmo desenvolvedor, é perfeito. O primeiro cria um formulário muito compacto e útil, com campos até de anexo e verificação com jQuery. O segundo cria um captcha numérico simples mas que vai acabar com a alegria (bots se alegram?) dos bots de spam.
WordPress SEO
É tranquilo o melhor plugin de SEO do WordPress. Esqueça o resto. Ele tem tantas opções que sozinho já vai eliminar a necessidade de outros plugins, pois tem função própria de breadcrumb, sitemap, redirecionamentos de feed e aplicação do código do Analytics. Compatível com português, tem também função para importar dados de outros plugins, pra você não ter desculpa pra continuar usando o antigo.
O melhor dele são as ferramentas no post, como inserção de palavra chave, análise de SEO pré-publicação, entre outros.
Broken Link Checker
Links quebrados são um problema pra todos: leitores que não encontram o que queriam, você que perde credibilidade e motores de busca que darão mais relevância a sites com links que funcionam.
Como pode ser muito trabalhoso (ou impossível) checar todos os links em centenas de posts, use esse plugin que detecta e exibe os quebrados no seu painel. Aí basta removê-los ou editá-los ali pelo painel mesmo.
W3 Total Cache/WP Super Cache
Tanto faz qual você usa, o importante é ter um dos melhores plugins de cache no seu blog. Com eles, o número de requisições diminui e o visitante usa dados armazenados quando volta a visitá-lo, o que reduz drasticamente o tempo de carregamento. Ambos tem muitas opções, precisam ser explorados, mas ajudam demais.
Dispensáveis
Breadcrumbs
Breadcrumb NavXT e similares
Plugins de breadcrumbs (trilhas de navegação) pra que se podemos criar isso com um pouco de código? Basta colar esse código no seu arquivo functions.php:
function the_breadcrumb() { echo '<ul id="breadcrumbs">'; if (!is_home()) { echo '<li><a href="'. get_option('home') .'">Home</a></li><li class="separator"> / </li>'; if (is_category() || is_single()) { echo '<li>'; the_category(' </li><li class="separator"> / </li><li> '); if (is_single()) { echo '</li><li class="separator"> / </li><li>'; the_title(); echo '</li>'; } } elseif (is_page()) { if($post->post_parent){ $anc = get_post_ancestors( $post->ID ); foreach ( $anc as $ancestor ) { $output = '<li><a href="'.get_permalink($ancestor).'" title="'.get_the_title($ancestor).'">'.get_the_title($ancestor).'</a></li> <li class="separator">/</li>'; } echo $output; echo '<strong title="'.$title.'"> '.$title.'</strong>'; } else { echo '<strong> '; echo the_title(); echo '</strong>'; } } } elseif (is_tag()) { single_tag_title(); } elseif (is_day()) { echo"<li>Arquivos de "; the_time('F jS, Y'); echo'</li>'; } elseif (is_month()) { echo"<li>Arquivos de "; the_time('F, Y'); echo'</li>'; } elseif (is_year()) { echo"<li>Arquivos de "; the_time('Y'); echo'</li>'; } elseif (is_author()) { echo"<li>Arquivos do Autor"; echo'</li>'; } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { echo "<li>Arquivos do Blog"; echo'</li>'; } elseif (is_search()) { echo"<li>Resultados da Busca"; echo'</li>'; } echo '</ul>'; } ?>
Então chame a trilha no tema com:
<?php the_breadcrumb(); ?>
Se quiser, estilize a trilha de navegação com um pouco de CSS. Cole isso no seu arquivos style.css:
#breadcrumbs{ list-style:none; margin:10px 0; overflow:hidden; } #breadcrumbs li{ float:left; margin-right:15px; } #breadcrumbs .separator{ font-weight:700; font-size:20px; color:#999; }
Paginação
WP-Pagenavi e similares
Temas com paginação numérica são cada vez mais comuns, mas se você ainda usa plugins pra ter isso, esqueça. Cole isso em seu arquivo functions.php:
function numeric_posts_nav() { if( is_singular() ) return; global $wp_query; /** Para a execução se há só 1 página */ if( $wp_query->max_num_pages <= 1 ) return; $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1; $max = intval( $wp_query->max_num_pages ); /** Adiciona página atual ao array */ if ( $paged >= 1 ) $links[] = $paged; /** Adiciona próximas páginas ao array */ if ( $paged >= 3 ) { $links[] = $paged - 1; $links[] = $paged - 2; } if ( ( $paged + 2 ) <= $max ) { $links[] = $paged + 2; $links[] = $paged + 1; } echo '<div class="navigation"><ul>' . "n"; /** Link para post anterior */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "n", get_previous_posts_link() ); /** Link para primeira página, + reticencias se preciso */ if ( ! in_array( 1, $links ) ) { $class = 1 == $paged ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $links ) ) echo '<li>…</li>'; } /** Link para página atual, + 2 páginas em cada direção se preciso */ sort( $links ); foreach ( (array) $links as $link ) { $class = $paged == $link ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Link para última página, + reticências se preciso */ if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) echo '<li>…</li>' . "n"; $class = $paged == $max ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Link para próximo post */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "n", get_next_posts_link() ); echo '</ul></div>' . "n"; }
Então no tema, na página dos arquivos (normalmente archive.php, index.php, category.php, ou qualquer outra que carregue vários posts arquivados), use isso:
<?php numeric_posts_nav(); ?>
E um pouco de estilo na style.css:
.navigation li a, .navigation li a:hover, .navigation li.active a, .navigation li.disabled { color: #fff; text-decoration:none; } .navigation li { display: inline; } .navigation li a, .navigation li a:hover, .navigation li.active a, .navigation li.disabled { background-color: #6FB7E9; border-radius: 3px; cursor: pointer; padding: 12px; padding: 0.75rem; } .navigation li a:hover, .navigation li.active a { background-color: #3C8DC5; }
Comentários do Facebook
Facebook Comments e afins
Usar os comentários do Facebook no seu blog pode até ser um pouco mais fácil com um plugin, mas é sempre bom lembrar da questão do tempo de carregamento – menos plugins, sites mais rápidos. Já publiquei sobre a implementação aqui, se ainda não viu, leia.
Data da modificação
Last Modified e similares
Plugins para mostrar a data da última modificação no artigo? Pff, isso é feito com uma única linha de código no seu arquivo functions.php:
?>Última atualização: <?php $x = get_the_time('U'); $m = get_the_modified_time('U'); if ($m != $x) { the_modified_time('d/m/Y'); } ?>
Posts relacionados
Related Posts e similares
Exibir posts relacionados não é o fim do mundo de dificuldade, e com um pouquinho de estilo você consegue resultados idênticos aos de plugins. Insira isso onde quiser exibir os posts relacionados (dentro do loop, logo após o local em que o post é exibido é um bom lugar):
<?php $origin_post = $post; global $post; $tags = wp_get_post_tags($post->ID); if ($tags) { $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'posts_per_page'=>3, // Quantos posts relacionados exibir? 'caller_get_posts'=>1 ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) { echo '<div id="related-posts"> <h3 class="related-header">Veja também...</h3> <ul>'; while( $my_query->have_posts() ) { $post_image_id = get_post_thumbnail_id($post_to_use->ID); $my_query->the_post(); ?> <li><div class="related-item"> <span class="related-thumb"><?php the_post_thumbnail('medium'); ?></span> <div class="related-info"> <h3 class="related-title"><a href="<?php the_permalink()?>" rel="bookmark nofollow" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> <?php the_excerpt(); ?> </div> </div></li> <? } echo '</ul></div>'; } } $post = $origin_post; wp_reset_query(); ?>
Isso vai te dar 3 posts relacionados (em relação às tags do post atual), com miniatura do post, título e resumo. Se quiser mostrar mais, é só alterar o número, e com CSS conseguimos mudar todo o resto. Se quiser eliminar o resumo do post, por exemplo, é só remover a linha “<?php the_excerpt(); ?>”.
2 Comments
Boas dicas, concordo com praticamente todas, mas a opção de paginação pode ser melhorada.
O WordPress já possui uma função nativa para paginação por números, mas infelizmente ninguém a conhece.
A função a que me refiro é paginate_links()
http://codex.wordpress.org/paginate_links
Verdade, é que durante tanto tempo o pessoal usou a função “externa” que acaba esquecendo essa nativa. Eu mesmo só fui conhecer há pouco tempo em um template mais moderno.