Widget – Lista de categorias (com e sem link)

<?php
	class categorias extends WP_Widget{
		function categorias(){
			parent::WP_Widget(false, 'Lista de Categorias');
		}
		function form($instance){
			$titulo=esc_attr($instance['titulo']);
		?>
			<p><label>Título: <br><textarea name="<?php echo $this->get_field_name('titulo');?>" rows="3" cols="33"><?php echo $titulo; ?></textarea></label></p>
		<?php
		}
		function widget($args,$instance){
			$titulo=esc_attr($instance['titulo']);
	?>
			<section class="widgets">
				<!-- Título do widget -->
				<h2><?php echo $titulo;?></h2>
				<?php $categorias = get_categories(array('hide_empty'=>false));?>
				<!-- Lista de categorias -->
				<ul>
					<?php foreach($categorias as $c){
						//Excluindo a categoria "Sem categoria"
						if($c->name != "Sem categoria"){							
							if($c->count >= 1){
							//Caso tenha post, vai aparecer com link
					?>
								<li><a href="<?php echo get_bloginfo('url').'category'.$c->slug;?>"><?php echo $c->name;?></a></li>
					<?php
							}else{
							//Senão, vai aparecer sem link
					?>
								<li><?php echo $c->name;?></li>
					<?php
							}
						}
					}?>
				</ul>
			</section>
	<?php
		}
	}
?>

Widget – Nuvem de Tags

Código da nuvem de tags

<?php
	class nuvem_de_tag extends WP_Widget{
		function nuvem_de_tag(){
			parent::WP_Widget(false, 'Nuvem de Tags');
		}
		function form($instance){
			$titulo=esc_attr($instance['titulo']);	
			echo '<p>'.imprime_titulo($this->get_field_name('titulo'), $titulo).'</p>';
		}
		function widget($args,$instance){
			$titulo=esc_attr($instance['titulo']);		
?>
			<section>
				<h2><?php echo $titulo;?></h2>
					<?php wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => 'post_tag') ) );?>
			</section>
<?php
		}
	}
?>

Registrando o widget.

<?php
	register_widget('menu_interno');
?>

Não se esqueça:

  • Chamar o arquivo de widget nas functions
  • Anexar o widget na sidebar dentro do admin.