Se seu blog tem três anos ou mais, conta com um problema na sidebar: o tamanho dos arquivos. É praxe dividir os arquivos por mês, logo, em três anos de blog, e considerando que pelo menos um texto foi publicado por mês, no box dos arquivos há 36 links!
Há dois problemas em ter tantos links no box Arquivos. O primeiro é que a sidebar fica extensa, tirando o foco do que vier abaixo dos arquivos, e/ou deixando-a muito maior que a coluna de posts. O segundo, e mais grave, é que tanto link assim vai contra uma das diretrizes do Google para webmaster, que diz que, numa página, o recomendado é ter, no máximo, 100 links.
Existem duas formas de contornar esse problema, as quais explicarei abaixo. A primeira é criar um menu drop down, o que economiza muito espaço, e é bem discreto. A outra, é listar os arquivos por ano, ao invés do tradicional, que é fazê-lo por mês. Mas não se trata de uma mera listagem por ano… No método que será ensinado, ao clicar n’algum ano, os meses deste se expandem. Vamos lá?
Arquivos como menu drop down

Arquivos como menu drop down.
Para conferir como fica o menu drop down na prática, veja a sidebar do WinAjuda (ou a imagem ao lado). Como se vê, o resultado é bem satisfatório, e o que é melhor: independe de plugin – embora, salvo engano, existam alguns com essa fianlidade.
Fazer isso em seu blog é muito fácil. Simplesmente copie e cole o trecho abaixo no arquivo sidebar.php, onde achar melhor:
<li><h2 class="titulos">Arquivos e Categorias</h2>
<ul>
<li><select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo attribute_escape(__('Escolha o mês')); ?></option>
<?php wp_get_archives('type=monthly&amp;amp;format=option&amp;amp;show_post_count=1'); ?> </select></li>
</ul>
</li>
Salve as alterações, e pronto!
Arquivos divididos por ano
O código para exibir arquivos é o seguinte:
<?php wp_get_archives('type=monthly'); ?>
Se seu intuito é simplesmente listar os arquivos por ano, e nada mais, substitua o termo monthly, no código acima, por yearly. Mas como isso é ficar no arroz com feijão, vamos além.
O código abaixo, além de listar os arquivos por ano, traz um plus interessante. Nele, quando o leitor clica num dos anos, a página correspondente é aberta, e no menu, os meses aparecem. Em meu blog pessoal é possível ver o sistema em funcionamento – ou, para quem preferir, na imagem abaixo:

Arquivos por ano.
Sem mais delongas, o código, extraído deste tópico do fórum oficial, é o seguinte:
<ul><li><h2>Arquivos</h2>
<ul>
<?php
global $month, $year; // scope WP global variables for later use
/* $arc_years => archive years query */
$arc_years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC");
foreach($arc_years as $arc_year) : // foreach loop for archive years
?>
<?php if($year != $arc_year) : // if current archive year does not equal $arc_year ?>
<li><a href="<?php echo get_year_link($arc_year); ?>"><?php echo $arc_year; ?></a></li>
<?php else : // current archive year *does* equal $arc_year ?>
<li><a href="<?php echo get_year_link($arc_year); ?>"><?php echo $arc_year; ?></a></li>
<li>
<ul>
<?php
/* $arc_months => archive months query for current archive year */
$arc_months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE YEAR(post_date) = '$arc_year' AND post_status = 'publish' ORDER BY post_date");
foreach($arc_months as $arc_month): // foreach loop for archive months of current archive year
?>
<li><a href="<?php echo get_month_link($arc_year, $arc_month); ?> "><?php echo $month[zeroise($arc_month, 2)]; ?></a></li>
<?php endforeach; // end foreach loop for archive months ?>
</ul>
</li>
<?php endif; // end if/else on archive $year/$arc_year ?>
<?php endforeach; // end foreach loop for archive years ?>
</ul>
</li></ul>
A única coisa que falta nele é um toque de AJAX, de modo que a abertura dos meses seja on the fly, sem que a página inteira precise ser recarregada. Algum programador-leitor disposto a fazer essa melhoria?
Em suma, é isso. Espero que tais dicas sejam úteis, e até a próxima!
Sim, existe o limite de 100 links, só que Matt Cutts explicou melhor sobre isso:
Então, se a página tem menos de 100 kb de HTML, não tem tanto problema ela ter mais de 100 links. No caso do meu blog ela não tem nem metade dos 100 kb, e achei bom deixar links para todas as categorias e arquivos na sidebar para melhorar a indexação do site.
Se bem que tendo o sitemap.xml, a indexação já é feita muito bem em 90% dos casos.
Abs
@ Noticias Automotivas
É, de fato. Mas neste mesmo texto, é dito que o limite de 100 links por página é tido como uma “boa prática”. E… bom, vindo do Google, o que eles disserem que é bom, eu faço
.
Mas obrigado pelo adendo. Muito interessante ver que algumas convenções estão sendo quebradas, graças aos avanços dos buscadores.
[]‘s!
PS: seu blog é muito bom, sempre dou uma passada lá para conferir os lançamentos de carros.
Boa idéia, mas sem o “toque de AJAX” é complicado. Espero que algum programador se habilite a ajudar!
Valeu Rodrigo!
Abs
Interessante, vale lembrar que o blogger no seu padrão utiliza uma maneira semelhante e já com AJAX, onde é possível recolher ou expandir o arquivo mensal ou anual por exemplo, se me sobrar um tempo coisa que está difícil utlimante vou fazer algo com AJAX para facilitar a navegação.
Sobre o menu drop down com a tag select, existe a opção default do WordPress nos widgets, é só marcar a opção para exibir o arquivo com menu drop dowm, para isso o theme tem que suportar widgets, mas hoje em dia poucos não tem esse suporte.
Valeu, um abraço!
Pingback: Posts Estrelados da Semana 51 - Bruno Godoi