Criando Widgets
No WordPress o sistema de widgets permite que usuários comuns ativem funcionalidades no site sem precisar, necessáriamente, entender HTML, CSS, PHP, etc. Mas para isso, esses usuários precisam que desenvolvedores se dediquem um pouco mais para tornar seus produtos (plugins, temas, etc) aptos a trabalhar dessa forma.
Para adicionar um widget, basta criar uma uma função e informar para o WP que aquela função deve ser tratada como um widget. Isso é feito da seguinte forma:
register_sidebar_widget('Nome do Widget', 'sua_funcao', 'sua_classe');
É tão simples quanto parece, o ‘Nome do Widget’ é o identificador do widget, ’sua_funcao’ é a função que deve ser chamada quando esse widget estiver ativo e ’sua_classe’ é opcional e se refere ao nome da classe css que deve ser inserida nesse widget.
Para que o seu widget se adeque ao tema é importante lembrar sempre de usar o modelo de widget definido no próprio tema para conter o conteúdo de sua função. Esse modelo é sempre embutido em forma de argumento na sua função, você só precisa usá-lo. Um exemplo vale mais do que mil palavras, então vejamos como ficaria:
sua_funcao($args) { print $args['before_widget']; print $args['before_title'] . "Nome do Widget" . $args['after_title']; print "conteúdo de seu widget"; print $args['after_widget']; }
Agora que você sabe que é fácil, não tem desculpa para não utiliza-lá em seus plugins. Assim, os usuário não precisarão fazer edições no template, para usufruir dos benefícios de seus plugins, além de tornar mais simples o seu controle.
Juntando o que você aprendeu até agora sobre criar um plugin mas o que você acabou de aprender sobre criação de widget e um pouco de criatividade, já é possível fazer algumas coisas interessantes. Que tal um plugin que mostre no sidebar os posts mais quentes:
<?php
/*
Plugin Name: Posts mais quentes
Description: Lista posts mais comentados
Version: 0.1
Author: Marcelo Mesquita
Author URI: http://www.marcelomesquita.com/
*/
// Posts Mais Quentes
function posts_mais_quentes($args)
{
global $wpdb;
// Recuperando os posts
$hot_posts = $wpdb->get_results("SELECT ID, post_title, comment_count FROM {$wpdb->posts} ORDER BY comment_count DESC LIMIT 5");
// Usando o modelo de widgets do tema
print $args['before_widget'];
print $args['before_title'] . "Mais Quentes" . $args['after_title'];
print "<ul>";
// Listando os posts mais quentes
foreach($hot_posts as $hot_post)
print "<li><a href='" . get_permalink($hot_post->ID) . "'>{$hot_post->post_title} ({$hot_post->comment_count})</a></li>";
print "</ul>";
print $args['after_widget'];
}
// Ativa o sidebar
function posts_mais_quentes_widgets() {
register_sidebar_widget('Posts Mais Quentes', 'posts_mais_quentes');
}
// Carregar o widget
add_action('widgets_init', 'posts_mais_quentes_widgets');
?>
Agora é só ativar o plugin e adicionar o widget ao sidebar para ve-lo funcionando. Colher de chá!
Agradecimentos
Obrigado ao Rômulo por corrigir o código do plugin acima.
Permalink: http://marcelomesquita.com/criando-widgets/