WordPress: arquivos anuais no menu dinâmico

O objetivo.

Eu estava atualizando o tema do meu WordPress ontem e descobri que não havia maneira de configurar a lista de arquivos agrupada por ano, não meses (padrão). Depois de um tempo analisando o código-fonte e pesquisando na web, achei uma maneira legal de fazer isso. Vou compartilhá-la aqui, em dois idiomas, assim outras pessoas não precisam gastar o tempo que gastei com isso (de qualquer jeito, foi divertido).

Se você fizer algumas buscas no código PHP do WordPress, você vai perceber que widgets como o “Arquivos” são carregados no arquivo wp-includes/default-widgets.php. Se você alterar essa linha:

<?php wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c))); ?>

para:

<?php wp_get_archives(apply_filters('widget_archives_args', array('type' => 'yearly', 'show_post_count' => $c))); ?>

Funcionará. Mas, hey, não é uma tática muito boa. Note o caminho do arquivo que você está alterando: wp-includes/default-widgets.php. Não está dentro da pasta de temas. Isso significa que seu novo menu de arquivos desaparecerá na próxima vez que você atualizar sua instalação do WordPress. Para evitar isso, você pode aproveitar o mecanismo de hooks do WordPress. O objetivo deste mecanismo é exatamente expor alguns pontos de extensão que podem ser usados por desenvolvedores de plugins e temas, assim eles não tem que ficar fuçando no código do núcleo do WordPress.

O widget Arquivos provê um hook chamado “widget_archives_args” (disponível no WP >= 2.8). Você pode pendurar sua função neste hook, e ela será usada como um filtro para os parâmetros passados para wp_get_archives pela implementação do widget. Nesta interceptação, você pode alterar o tipo do arquivo para “yearly” (anual) através do seguinte trecho de código:

function yearly_archives_callback($args) { $args['type'] = 'yearly'; return $args; }
add_filter('widget_archives_args', yearly_archives_callback);

Coloque isso no início do arquivo functions.php do seu tema. Em sua sidebar, o widget agora mostrará uma lista de anos e, se você assim o configurou, o número de posts naquele ano. Dado que o arquivo functions.php está dentro do diretório do seu tema, ele não será sobrescrito em uma atualização do WordPress. Você apenas tem que cuidar para não usar o tema padrão (twentyten) sem renomeá-lo. Do contrário, o esforço de colocar o código dentro do tema terá sido em vão.

This post is also available in english.

Esta entrada foi publicada em etc. Adicione o link permanente aos seus favoritos.

Uma resposta para WordPress: arquivos anuais no menu dinâmico

  1. Pingback: Wordpress: yearly archives in the dynamic menu | Subterfúgios

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.