Deprecated: Assigning the return value of new by reference is deprecated in /home/summarg/domains/summarg.com/public_html/wp-content/plugins/post-series/post-series.php on line 841 Notice: is_feed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.) in /home/summarg/domains/summarg.com/public_html/wp-includes/functions.php on line 3245 Mostrar aleatoriamente los widgets de una sidebar | SummArg

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