jQuery: gestire i widget di WordPress

jQuery: gestire i widget di WordPress

In WordPress maggiore è il numero di widget posti nelle colonne laterali o nel footer maggiore è l'altezza complessiva del documento. A volte si vorrebbe che il visitatore si concentrasse sul contenuto senza distrazioni e che gli venisse data la possibilità di visionare il contenuto dei widget solo quando è realmente interessato. jQuery ci viene in aiuto con una soluzione presa in prestito dai menu di tipo accordion. Vediamo quale.

Solitamente un widget ha questa struttura:


<div class="widget">
	<h3>Et ideo autem aquis</h3>
	<ul>
		<li><a href="#">Ideo autem sit</a></li>
		<li><a href="#">Ideo autem sit</a></li>
		<li><a href="#">Ideo autem sit</a></li>
		<li><a href="#">Ideo autem sit</a></li>
		<li><a href="#">Ideo autem sit</a></li>
	</ul>
</div>

Questa struttura può cambiare da tema a tema arricchendosi di nuovi elementi e attributi, ma solitamente abbiamo sempre il titolo del widget seguito dal suo contenuto.

Con i CSS possiamo nascondere inizialmente il contenuto lasciando solo il titolo:


div.widget h3 {
	background: #333;
	color: #fff;
	padding: 0.3em;
	border-radius: 5px;
	margin: 1em 0 0 0;
	cursor: pointer;
}

div.widget ul {
	margin: 1em 0;
	padding: 0.4em;
	list-style: none;
	background: #ccc;
	border-top: 2px solid #444;
	border-bottom: 1px solid #444;
	display: none;
}

Quindi associamo un evento click al titolo per mostrare o nascondere il contenuto del widget a seconda se sia già visibile o no:


$(function() {

	$('div.widget', document.body).each(function() {
	
		var $widget = $(this);
		var $title = $('h3', $widget);
		var $list = $title.next();
		
		$title.click(function() {
		
			if($list.is(':hidden')) {
			
				$list.slideDown(600);
			
			} else {
			
				$list.slideUp(600);
			
			}
		
		});
	
	});

});

Potete visionare l'esempio finale in questa pagina.

Torna su