Radio VOlt Fm

quinta-feira, 22 de outubro de 2009

Widgets para o WordPress 2.8


Leia o artigo anterior:
*
Entre as principais melhorias do lançamento da versão 2.8 do WordPress está o novo sistema de widgets. A interface do usuário está muito mais simples de utilizar, todos os widgets e sidebares ficam listados, basta arrastar um widget para o sidebar desejado e pronto! O WordPress salva automaticamente o sidebar e, além disso, os widgets já são multiplicáveis, então não é mais necessário ficar regulando a divisão deles ou utilizar plugins que façam a duplicação.
Mas a melhoria não foi só na interface com o usuário; a criação dos widgets também ficou muito mais simples. O WordPress disponibiliza uma classe com todo o código bruto para o funcionamento dos widgets sobrando para o desenvolvedor apenas algumas funções específicas.
API dos Widgets do WordPress fornece um modelo para a criação dos widgets:
class My_Widget extends WP_Widget {
        function My_Widget() {
                // widget actual processes
        }

        function widget($args, $instance) {
                // outputs the content of the widget
        }

        function update($new_instance, $old_instance) {
                // processes widget options to be saved
        }

        function form($instance) {
                // outputs the options form on admin
        }
}
register_widget('My_Widget');
Explicando rapidamente, nesse modelo você cria uma classe 'My_Widget' filha de uma classe 'WP_Widget' que é a classe fornecida pelo WordPress contendo o código bruto, restando ao desenvolvedor a definição dos métodos:

My_Widget()

O construtor deve sempre ter o mesmo nome da classe ou se chamar __construct (depende da versão do PHP). No construtor são definidos o id, o nome, a descrição, e outras informações relativas ao widget.

widget($args, $instance)

Esse método define a forma como o widget é apresentado no tema. O parêmetro $args é um array contendo a formatação da estrutura do widget, como tags de abertura e fechamento e do título do widget, além do nome e id.
O conteúdo dessa função não muda muito em relação ao modelo anterior dos widgets que era chamado pelo 'register_sidebar_widget', a única diferença é que o conteúdo da função, antes carregado do banco, agora vem todo no array $instance.

form($instance)

O método form representa a interface administrativa do widget, onde é feita a sua configuração. Sua definição não é obrigatória.
Esse método é o espelho da função chamada pelo 'register_widget_control', mas aqui fica somente a estrutura do formulário. Assim como o método 'widget', aqui os dados não precisam mais serem carregados do banco, o array $instance traz todos os dados. O que notei de diferente na montagem do formulário foram apenas as nomenclaturas dos campos, agora tendo que ser feita da seguinte forma:
php print $this->get_field_id('nome-do-campo'); ?>" name="php print $this->get_field_name('nome-do-campo); ?>" value="php print $instance['nome-do-campo']; ?>" />

update($new_instance, $old_instance)

Também não é necessária a definição do método update. É esse método que realiza o processamento dos dados antes de salvá-los no banco. O parâmetro $new_instance contém os dados novos (os que acabaram de ser informados) enquanto o $old_instance contém os dados antigos, para o caso de ser necessário fazer uma comparação.
Após o processamento dos dados, um array com os dados finais deverá ser retornado.
Não pretendo explicar novamente a lógica de criação de um widget, portanto vou simplesmente refazer o widget 'Posts Mais Quentes' nesse novo modelo e caso tenham dúvidas, consultem o artigo anterior.

Nenhum comentário:

Postar um comentário

Comente dê sua opinião ou sugestões em nosso Blog