5 способов использовать виджеты WordPress

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

 

1. Несколько областей для виджетов

Несколько         областей для виджетов

Темы, которые имеют большой выбор мест для размещения различных виджетов, нравятся пользователям и удобны для настройки. Первый шаг на пути к использованию виджетов на вашем сайте под управлением WordPress - сделать вашу тему доступной для применения виджетов. Задача достаточно просто решается, если поместить правильный код в правильное место.

Регистрация областей для виджетов

Чтобы получить несколько областей для использования виджетов нужно зарегистрировать их в файле functions.php вашей темы WordPress. Допустим, у вас используется трехколоночная тема, и вы хотите получить две разных боковых панели справа и слева:

<?php
	register_sidebar( array(
		'name' => 'left-sidebar',
		'id' => 'left-sidebar',
		'before_widget' => '<div id="%1$s" class="%2$s widget">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>'
	) );
	register_sidebar( array(
		'name' => 'right-sidebar',
		'id' => 'right-sidebar',
		'before_widget' => '<div id="%1$s" class="%2$s widget">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>'
	) );
?>

Активация областей для виджетов

Затем нужно поместить код динамической боковой панели в нужный файл. В зависимости от структуры темы, код может быть расположен в файле sidebar.php или другом. Вот пример кода для использования:

<?php if (!dynamic_sidebar("left-sidebar") ) : ?>
Код для левой боковой панели по умолчанию располагается здесь...
<?php endif; ?>

 

<?php if (!dynamic_sidebar("right-sidebar") ) : ?>
Код для правой боковой панели по умолчанию располагается здесь...
<?php endif; ?>

Код между тегами PHP будет выводиться, если не используется никаких виджетов в соответствующей области. Например, если никаких виджетов не подключено к левой боковой панели, то будет выведено "Код для левой боковой панели по умолчанию располагается здесь...".

 

2. Плагин Widget Logic

Плагин Widget         Logic

Иногда не нужно, чтобы один и тот же виджет выводился одинаково на каждой странице вашего блога. В данном случае плагин Widget Logic будет очень полезен.

После установки в окне настройки каждого плагина будет выводится поле “Widget Logic”. В данном поле можно ввести набор условных тегов WordPress для управления выводом виджета.

На рисунке виджет календарь будет выводиться только на странице с названием “evil”. Можно использовать и другие теги условия.

Примеры

  • Выводить только на главной странице: is_home()
  • Выводить только на определенной записи: is_single()
  • Выводить только на определенной странице: is_page()
  • Выводить только на определенной странице архива : is_archive()
  • Выводить только на странице с результатами поиска: is_search()
  • Выводить на всех страницах кроме главной: !is_home()
  • Выводить только на страницах “Advertise” или “Contact”: is_page('advertise') || is_page('contact')

Просто введите условия в поле ввода Widget Logic в зависимости от того, где нужно выводить виджет.

 

3. Виджет Query Posts

Виджет Query         Post

Функция WordPress  query_posts является мощным средством для управления процессом вывода записей и страниц в главном цикле.

Но, если ваш уровень владения PHP не достаточно развит для использования функции query_posts, вам может пригодиться виджет Query Posts, с помощью которого вывод содержания будет организован так, как нужно.

После установки и активации плагина станет доступен новый виджет “Query Posts” в меню управления виджетами WordPress.

Что он может

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

 

4. Шаблоны для страницы 404

Шаблоня для         страницы 404

Множество тем для WordPress, включая темы по умолчанию, не предлагают ничего полезного для страницы 404.

Есть множество отличных виджетов Wordpress, которые могут оживить страницу 404 и сделать ее полезной для посетителя, который ищет информацию. К таким виджетам относятся "Свежие записи", "Рубрики" и "Архивы".

Код

Сначала нужно зарегистрировать область для виджетов в WordPress. Открываем файл functions.php вашей темы и размещаем в нем следующий код:

<?php
	register_sidebar( array(
		'name' => '404',
		'id' => '404',
		'before_widget' => '<div id="%1$s" class="%2$s widget">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>'
	) );
?>

Теперь область виджетов зарегистрирована и можно редактировать файл 404.php вашей темы, добавив в него следующий код:

<?php dynamic_sidebar( '404' ); ?>

Готово. Теперь можно помещать любой виджет в область "404", и он будет выводиться каждый раз, когда посетитель окажется на странице 404. Улучшите ее с помощью  полей поиска, списка последних записей или рубрик.

 

5. Вставляем рекламу между записями

Реклама между         записями

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

Код

Также как и для страницы 404, сначала нужно зарегистрировать область для размещения виджетов. Открываем файл functions.php и вставляем код:

<?php
	register_sidebar( array(
		'name' => 'index-insert',
		'id' => 'index-insert',
		'before_widget' => '<div id="%1$s" class="%2$s widget">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>'
	) );
?>

Для изменения основной страницы нужно открыть файл index.php вашей темы, найти директиву “endwhile” в конце файла и разместить следующий код прямо над ней. Код должен будет выглядеть так:

<?php if ($count==2) { 
	dynamic_sidebar('index-insert')
 }
$count = $count + 1;
endwhile; ?>

Мы вставляем область виджетов “index-insert” сразу за второй записью. Вы можете изменить значение в выражении $count==2 на другой число, которое будет соответствовать номеру записи, после которой будет вставляться область для виджетов.

Если вы хотите вставлять область для виджетов в список архива или между рубриками, или метками, то нужно соответствующим образом изменить код файлов  archive.php или category.php, или tag.php. Можно даже контролировать, какая информация будет выводиться, с помощью условных тегов плагина Widget Logic, например, is_archive(), is_category() или is_tag().

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://wp.smashingmagazine.com/2009/07/14/5-useful-and-creative-ways-to-use-wordpress-widgets/
Перевел: Сергей Фастунов
Урок создан: 10 Октября 2011
Просмотров: 56100
Правила перепечатки


5 последних уроков рубрики "Wordpress"

или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 10 Октября 2011 22:18
    rasul96
    Че-то в последнее время уроки не очень пошли нужно побольше уроки о PHP класть или IQuery
  • 10 Октября 2011 22:37
    stilet2010
    Ребята расскажите пожалуйста подробней о пункте 5. Мня интересует размещение контекстной рекламы между анонсами статей. Как это сделать я не понял? Куда вставлять код контекста?
    • 11 Октября 2011 00:21
      belousovnikita
      файл index.php перед endwhile
  • 11 Октября 2011 09:56
    klio
    Посещаю все Ваши рассылки и других тоже. и эксперементирую на своём сайте. Дошло до того , что на сайт в админку мне путь закрыт - при входе выскакивает вот такая страница: / / Add_action ('wp_head', 'social_sharing_css'); / / add_filter ('the_content', 'social_sharing'); / / add_filter ('plugin_action_links', 'social_sharing_settinglink', 10, 2); / / add_action ('admin_menu' "social_sharing_addmenu '); Предупреждение : Не удается изменить информацию заголовка - заголовки уже прислал (выход начался в / главная / п / nadeszda / newsite.ru / public_html / WP-содержание / плагины / социально-обмен-WP / социальный обмен. PHP: 175) в / главная / п / nadeszda / newsite.ru / public_html / WP-включает / pluggable.php на линии 934 Что теперь делать Не знаю. Как говорится: не зная брода - не лезь в воду.
    • 11 Октября 2011 12:06
      s333555
      Бекап спасет мир.
  • 16 Октября 2011 15:26
    prologos
    этот урок лучше оставить без внимания
  • 18 Октября 2011 23:30
    jah_man
    ребята Вы смотрите на дату публикации переводимого урока и все станет на свои места - эта инфа не актуальна
  • 14 Апреля 2012 17:45
    malinushka
    Почему же не актуальна? Меня вот, например, интересует п.3 - никак не могу найти более-менее (да хоть какую-нибудь уже) подробную и внятную информацию по настройке этого виджета. А край как надо сделать список статей из определенной рубрики, чтобы он отображался именно в этой конкретной рубрике. Может я зря его мучаю? И он вообще не по этой теме? И кто-нибудь подскажет решение...)))
  • 17 Июня 2012 19:53
    bekass
    У меня на эти коды файрволл конкретно ругнулся и не дал ничего прописать. Значит тут что-то не то...
  • 10 Июля 2013 17:29
    xxMixailxx
    Информеры Виджет "Настроение рынка" Виджет "Обзор рынка" Виджет "Технический анализ" Виджет "Форекс Аналитика" Силка http://www.ifcmarkets.com/ru/partnership/informers
  • 12 Сентября 2013 13:05
    olezhon
    Здравствуйте! Форма поиска отображаются в обоих сайдбарах, подскажите пожалуйста как убрать данный виджет с левого сайдбара. http://i016.radikal.ru/1309/da/7879cf6fb8b0.jpg
  • 15 Августа 2015 13:17
    Денис Никуляк
    Добрый день! Подскажите пожалуйста, а как задать id одному конкретному виджету? Это технически возможно? Так как если прописываем id="%1$s", то задаются id всем виджетам. Заранее спасибо.
  • 25 Февраля 2016 20:04
    ALESHA_ONLINE
    Есть плагин, который меняет страницы на записи и наоборот! Устанавливал, а найти не могу сейчас! Как называется???
^ Наверх ^