SummArg | Cursos y recursos para webmasters

26/06/2011

Mostrar aleatoriamente los widgets de una sidebar

Emanuele Feronato nos muestra cómo logró hacer que los widgets dentro de una sidebar se muestren aleatoriamente. Básicamente creó una función que colocó en el functions.php de su theme para colocar los widgets dentro de un array, dividir ese array y modificar el orden al azar:

function random_widgets($sidebar,$random_start,$random_end){
ob_start();
$widgets = dynamic_sidebar($sidebar);
if($widgets){
$html = ob_get_contents();
$widgets_array = explode("<li",$html);
$head = array_slice($widgets_array, 0, $random_start);
$body = array_slice($widgets_array, $random_start, $random_end-$random_start+1);
$tail = array_slice($widgets_array, $random_end+1);
shuffle($body);
$new_array = array_merge($head,$body,$tail);
foreach($new_array as $widget){
if($widget){
$final_html.= "<li".$widget;
}
}
}
else{
$final_html = "";
}
ob_end_clean();
echo $final_html;
}

En la sidebar el código a colocar es:
<div class="sidebar">
<ul>
<?php if(function_exists('dynamic_sidebar')):random_widgets('Sidebar',2,5); else : ?>
<?php endif; ?>
</ul>
</div>

Dejar un comentario

  1. Hola, llevo algún tiempo intentando activar esa función de orden aleatorio sin conseguirlo.
    ¿en qué lugar exacto de la sidebar.php insertaríamos el código?
    ¿alguna web que utilice esta función?

    Gracias.

Dejar un comentario