domingo, 4 de março de 2007

Dropdown Archives Widget (fix)

Primeiro quero dizer que minha versão do Wordpress é a 2.0.2 e que este fix pode não funcionar para você, fique atento.

Ontem instalei o Dropdown Archives Widget do Reid Beels, mas após ativá-lo obtinha o seguinte erro ao acessar o blog:
warning: call_user_func_array(): First argumented is expected to be a valid callback, 'widget_archive_drop_js' was given in

Além do erro acima o tal widget não aparecia na lista de widgets disponíveis. Vasculhando os comentários do blog do widget em questão notei que algumas pessoas reportavam o mesmo problema e o autor não respondera a ninguém.

Desamparado fui fuçar o código do widget e enquanto fazia isso aproveitei para fazer o mesmo com outros códigos de outros widgets. Hmm.. quem diria, esbarrei na solução parcial do problema. Notei que todos os widgets temuma estrutura semelhante, sendo que ao final sempre executam a ação de carregar o widget. No caso do dito Dropdown Archives o autor utilizou a função abaixo:
add_action('widgets_init', 'widget_archive_drop_init');

Comparando com meus outros widgets mudei o primeiro parâmetro da função sendo que a chamada ficou assim:
add_action('plugins_loaded', 'widget_archive_drop_init');

Provavelmente o 'widgets_init' funcione para uma versão do Wordpress mais recente que a minha 2.0.2, visto que a do autor do widget parece ser a 2.1.

Bom, o erro sumiu, o widget apareceu na página mas... a lista estava vazia. Voltei a fuçar e no comentário do Rafael Arcanjo obtive alguma ajuda. Na realidade ele postou no seu blog uma matéria reportando o bug (agora sei que não é um bug) do Dropdown Archives e dizendo com sinceridade não saber qual o problema, entretanto ofereceu uma solução alternativa sobre como realizar uma lista Dropdown para os arquivos. Pois bem, em sua solução ele utiliza a função get_archives(), marcada como deprecated, e que o autor utiliza a wp_get_archives() que é mais recente.

Isto significa que meu blog precisa de um update, mas como não pretendo atualizar por enquanto fiz minha Dropdown list funcionar fazendo a seguinte alteração:
wp_get_archives("type=monthly&show_post_count=$c&format=option");

passa a utilizar a função descontinuada e sua respectiva sintaxe:
get_archives("monthly","","option",$c);

Pronto! Ai tudo funcionou.