Как ограничить все виджеты WordPress данной категорией? - PullRequest
0 голосов
/ 27 февраля 2010

Как мне ограничить все виджеты WordPress данной категорией? Например, у меня есть всплывающее окно со списком на боковой панели, которое позволяет мне выбирать категорию птиц, и все данные виджета на этой боковой панели соответствуют этой категории птиц. Я думаю, что мне нужен какой-то фильтр с add_filter (), но я не понимаю процесс. Документы по этому вопросу являются неполными.

1 Ответ

0 голосов
/ 01 марта 2010

Я очень нервничал по поводу использования фильтра запросов, потому что он слишком встроен в SQL API WordPress и, следовательно, потенциально может сломаться в будущих выпусках WordPress - тем более что во время этого ответа на StackOverflow здесь выпуск WordPress 3.0 довольно скоро и может внести некоторые существенные изменения.

Исправление было сосредоточено на полной замене содержимого виджета. Вот пример:

<?php 
add_filter('dynamic_sidebar_params','filterWidget');
function filterWidget($args) {
  switch($args[0]['widget_name']) {
    case 'Meta':
    case 'Categories':
    case 'Pages':
      return 0; //hide widget output
      break;
    case 'Links':
      //display new widget replacement output
      echo '<li class="widget"><h2 class="widgettitle">Links</h2>Hello world</li>';
      return 0; //hide previous widget output
      break;
    default:
      //echo "<br /><br />";
      //print_r($args);
      //echo "<br /><br />";
      return $args;
  } //end switch
}

В этом примере, если вы поместите его в верхнюю часть файла sidebar.php вашей темы, он полностью скроет виджеты Meta, Categories и Pages, заменит виджет Blogroll (ссылки) на совершенно новый контент, а затем пусть все остальные ваши виджеты отображаются нормально.

Это решает мою проблему, потому что теперь я могу перерисовать эти виджеты, но на этот раз я делаю это с ограничением по категориям. Насколько я знаю, я могу использовать немного Кодекса WordPress, чтобы получить данные, необходимые для отображения этих виджетов, фильтрации по категориям, если я хочу, и затем я даже могу использовать некоторые подпрограммы, которые делают такие вещи, как рисование. календарь или облако тегов.

...