Как отобразить виджеты сайтбара в случайном порядке?

Автор:
Nurlan Kemelbekov

Вам нужен плагин для того, чтобы отобразить виджеты темы WordPress на боковой панели сайдбара в случайном порядке? Вы не найдете его. На одном из забугорных сайтов я встретил скрипт из 22 строк для  отображения виджетов сайтбара в случайном порядке.

И не просто в «произвольном порядке», а чтобы некоторые виджеты оставались в фиксированном положении, а остальные менялись местами . Может быть это кому-то и пригодится.
Смысл заключается в том, что имеющие первую и последнюю позицию остаются фиксированной, а остальные виджеты должны отображаться в случайном порядке.отбразить виджеты
Если ваша тема разработана в соответствии принципам WP, ваш sidebar.php файл должен содержать что-то вроде этого:

<div class="sidebar">
<ul>
<?php if(function_exists('dynamic_sidebar')):dynamic_sidebar(); else : ?>
<?php endif; ?>
</ul>
</div>


Где dynamic_sidebar функция вызова виджета, которая и выводит их на боковую панель в определенном порядке.
Генерируется HTML что-то вроде этого:

<li id="some_id" class="widget widget_text">1-ый Widget content</li>
<li id="some_id" class="widget widget_text">2-ой Widget content</li>
...
<li id="some_id" class="widget widget_text">пос-ний Widget content</li>

Скрипт должен сохранить сгенерированный HTML, разбить его на отдельные HTML-виджеты и смешать его по мере необходимости.
Код.
Следующий код не должен быть просто скопирован и вставлен. Но он может дать вам краткое описание того, что вы можете сделать.
Во-первых, сделайте некоторые изменения в sidebar.php следующим образом:


Изменена функция dynamic_sidebar на random_widgets. Название аргумента боковой панели, индекс первого виджета и индекс последнего виджета, перемещаются для произвольного воспроизведения. Каждый виджет за пределами таких показателей не будут перемещен. Функция random_widgets определена в functions.php:
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;
}

Вы можете увидеть результат при обновлении страницы. Боковые панели виджетов сайдбара перемещаются в случайном порядке за исключением первого и последнего виджетов, которые остаются на своем месте. Этот вариант может быть интересен тем блогерам, у которых в сайдбаре установлены несколько банеров или рекламных блоков.

Продолжение темы читайте в статье Как вывести случайные статьи на WordPress блоге
P.S. Возможно вам придется вставлять все необходимые html коды не с админки, а непосредственно в sitebar.php файле, удалив при этом виджеты с админки:
<li id=»some_id» class=»widget widget_text»>1-ый Widget content</li>
<li id=»some_id» class=»widget widget_text»>2-ой Widget content</li>



Вам также может понравиться:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Copy This Password *

* Type Or Paste Password Here *

семнадцать + 16 =

Я просто хотел сказать, как сильно я ценю Ваш комментарий на мой пост. Спасибо Вам !!