WordPress как на ладони
Прибыльная монетизация. Выгодно. Безопасно. Стабильно.

the_widget()WP 2.8.0

Выводит указанный виджет за пределами сайдбара. Можно использовать в любом месте шаблона.

Хуки из функции

Возвращает

null. Ничего. Выводит на экран HTML код виджета.

Использование

the_widget( $widget, $instance, $args );
$widget(строка) (обязательный)

Название PHP класса, который отвечает за виджет. см. /wp-includes/default-widgets.php.

Виджеты из коробки:

WP_Widget_Pages
WP_Widget_Links
WP_Widget_Search
WP_Widget_Archives
WP_Widget_Media
WP_Widget_Media_Audio
WP_Widget_Media_Image
WP_Widget_Media_Video
WP_Widget_Media_Gallery
WP_Widget_Meta
WP_Widget_Calendar
WP_Widget_Text
WP_Widget_Categories
WP_Widget_Recent_Posts
WP_Widget_Recent_Comments
WP_Widget_RSS
WP_Widget_Tag_Cloud
WP_Nav_Menu_Widget
WP_Widget_Custom_HTML
WP_Widget_Block

Подробное описание каждого виджета смотрите ниже.

$instance(массив/строка)

Параметры виджета (настройки экземпляра класса).

Можно указать: массив array('dropdown'=>'1') или строку запроса: 'dropdown=1&count=1'.

Какие параметры у каждого виджета смотрите ниже. Или зайдите в админку WP Внешний вид > Виджеты, активируйте нужный виджет и посмотрите какие у него есть параметры. Чтобы узнать конкретное название параметра, смотрите последнее значение атрибута name у поля виджета, например у виджета «облако меток» поле «заголовок» равно name="widget-tag_cloud[2][title]" - значит настройка будет - title.

oblako

По умолчанию: array()

$args(массив)

Массив параметров для изменения отображения виджета. Может быть:

  • before_widget(строка)
    HTML который будет добавлен перед кодом виджета.
    По умолчанию: <div class="widget %s">, где %s class виджета.

  • after_widget(строка)
    HTML который будет добавлен после кода виджета.
    По умолчанию: </div>

  • before_title(строка)
    HTML который будет добавлен перед кодом заголовка виджета.
    По умолчанию: <h2 class="widgettitle">

  • after_title(строка)
    HTML который будет добавлен после кода заголовка виджета.
    По умолчанию: </h2>

По умолчанию: array()

Примеры

0

#1 Демо

Показать виджет с настройками по умолчанию:

<?php the_widget( 'WP_Widget_Categories' ); ?>

Показать виджет с настройками:

<?php the_widget( 'WP_Widget_Categories', 'dropdown=1&count=1' ); ?>

Показать виджет с пользовательскими параметрами:

<?php 
$instance = array(
	'dropdown' => 1,
	'count'    => 1,
);

$args = array(
	'before_widget' => '<div id="%1$s" class="widget %2$s">',
	'after_widget' => '</div>',
	'before_title' => '<div class="widget-title">',
	'after_title' => '</div>'
);

the_widget( 'WP_Widget_Categories', $instance, $args );
?>

Базовые виджеты WordPress

WP_Widget_Archives – архивы

the_widget( 'WP_Widget_Archives', $instance, $args );

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Archives')
count(число)
Сколько постов для каждого архива выводить. Параметр show_post_count для функции wp_get_archives().
По умолчанию: 0 (спрятать)
dropdown(логический)
1 - как выдающий список. 0 - как ul список.
По умолчанию: 0 (ul список)

Примеры:

Базовый вывод:

<?php the_widget( 'WP_Widget_Archives' ); ?>

Выпадающий список:

<?php the_widget( 'WP_Widget_Archives', 'dropdown=1' ); ?>

WP_Widget_Calendar – календарь

<?php the_widget( 'WP_Widget_Calendar', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета
По умолчанию: ''

Примеры:

<?php the_widget( 'WP_Widget_Calendar' ); ?>

WP_Widget_Categories – рубрики

<?php the_widget( 'WP_Widget_Categories', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __( 'Categories' )
count(число)
Количество постов в каждой категории. Параметр show_count в функциях: wp_dropdown_categories() или wp_list_categories().
По умолчанию: 0 (спрятать)
hierarchical(логический)
1 - Древовидный вывод: дочерние и родительские рубрики. 0 - один уровень для всех.
По умолчанию: 0 (сплошной вывод)
dropdown(логический)
1 - как выдающий список. 0 - как ul список.
По умолчанию: 0 (гд список)

Примеры:

Базовое использование:

<?php the_widget('WP_Widget_Categories'); ?>

Выпадающий список с количество записей в рубриках:

<?php the_widget( 'WP_Widget_Categories', 'dropdown=1&count=1' ); ?>

WP_Widget_Meta – вход/выход и мета данные

Выводит полезные ссылки: вход/выход, админка, фиды, WordPress ссылки.

<?php the_widget( 'WP_Widget_Meta', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Meta')

Примеры:

Выведем виджет:

<?php the_widget( 'WP_Widget_Meta' ); ?>

WP_Widget_Pages – постоянные страницы

Выводит список страниц.

<?php the_widget( 'WP_Widget_Pages', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Pages')
sortby(строка)
Колонка для сортировки. Параметр sort_column функции wp_list_pages().
По умолчанию: 'menu_order'
exclude(строка/массив)
ID записей которые нужно исключить из списка. Через запятую или в массиве.
По умолчанию: ''

Примеры:

Выведем список страниц:

<?php the_widget( 'WP_Widget_Pages' ); ?>

Обернем заголовок виджета в h3 тег и отсортируем страницы по дате изменения:

<?php the_widget('WP_Widget_Pages', 'title=Измененные страницы&sortby=post_modified', 'before_title=<h3>&after_title=</h3>'); ?>

WP_Widget_Recent_Comments – последние комментарии

<?php the_widget( 'WP_Widget_Recent_Comments', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Recent Comments')
number(число)
Число комментариев для вывода. Максимум 15.
По умолчанию: 5

Примеры:

Выведем последние комментарии:

<?php the_widget( 'WP_Widget_Recent_Comments' ); ?>

WP_Widget_Recent_Posts – последние записи

<?php the_widget( 'WP_Widget_Recent_Posts', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Recent Posts')
number(число)
Число записей для вывода. Максимум 15.
По умолчанию: 5

Примеры:

Выведем последние записи:

<?php the_widget( 'WP_Widget_Recent_Posts' ); ?>

WP_Widget_RSS – RSS

Выводит список элементов по указанному УРЛ на RSS или Атом вида.

<?php the_widget( 'WP_Widget_RSS', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: берется из Указанного УРЛ
url(строка) (обязательный)
УРЛ на RSS или Атом фид.
items(число)
Количество выводимых ссылок.
По умолчанию: все из фида
show_summary(логический)
Выводить ли короткое описание под ссылками?
По умолчанию: false
show_author(логический)
Выводить ли автора поста?
По умолчанию: false
show_date(логический)
Выводить ли дату публикации?
По умолчанию: false

Примеры:

Выведем записи этого сайта:

the_widget( 'WP_Widget_RSS', array(
	'feed' => 'http://wp-kama.ru/feed',
	'items' => 5,
	'show_summary' => true
) );

WP_Widget_Search – поиск

<?php the_widget( 'WP_Widget_Search', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок формы поиска.
По умолчанию: null

Примеры:

Выведем форму поиска:

<?php the_widget( 'WP_Widget_Search' ); ?>

WP_Widget_Tag_Cloud – облако меток

<?php the_widget( 'WP_Widget_Tag_Cloud', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: __('Tags')
taxonomy(строка)
Название таксономии из элементов которой будет построено облако.
По умолчанию: post_tag

Примеры:

Выведем облако меток:

<?php the_widget('WP_Widget_Tag_Cloud'); ?>

WP_Widget_Text – произвольные текст

Выводит любой текст. В тексте можно использовать HTML теги.

<?php the_widget( 'WP_Widget_Text', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: null (без заголовка)
text(строка)
Текст который нужно вывести в виджете. Можно использовать HTML теги.
По умолчанию: ''
filter(строка)
Если указать, то вывод будет обработан функцией wpautop().
По умолчанию: ''

Примеры:

Выведем произвольный текст:

the_widget( 'WP_Widget_Text', 'title=Мой Текст &text=Сам <b>текст</b>' );

/* Выведет на экран:
<div class="widget widget_text">
	<h2 class="widgettitle">Мой Текст </h2>
	<div class="textwidget">Сам <b>текст</b></div>
</div>
*/

Выводит ссылки из указанного меню. Учитывает вложенность и порядок элементов.

<?php the_widget( 'WP_Nav_Menu_Widget', $instance, $args ); ?>

Параметры виджета - возможные поля $instance:

title(строка)
Заголовок виджета.
По умолчанию: null
nav_menu(строка/число) (обязательный)
ID меню, которое нужно вывести. ID меню можно узнать в админке, в настройках меню - смотрим в УРЛ (там ID видно) или берем само название меню в качестве ID.

Примеры:

Выведем меню 2 и "Мое меню":

the_widget( 'WP_Nav_Menu_Widget', array('nav_menu' => 2) );

the_widget( 'WP_Nav_Menu_Widget', array('nav_menu' => 'Мое меню') );

Для вывода меню в WordPress есть специальная функция: wp_nav_menu()

Произвольный виджет

Вывод любого виджета. Пусть его класс называется "My_Custom_Widget".

<?php the_widget( 'My_Custom_Widget', $instance, $args ); ?>
  • Название класса: WIDGET CLASS NAME

  • Параметры (настройки): произвольно

  • Аргументы: произвольно

Примеры:

Виджет регистрируется в коде так. Подробнее про регистрацию виджета смотрите в примерах register_widget():

class My_Custom_Widget extends WP_Widget{
	// your code
}

А затем выводиться так:

<?php the_widget( 'My_Custom_Widget', $instance, $args ); ?>

Заметки

  • Global. WP_Widget_Factory. $wp_widget_factory

Список изменений

С версии 2.8.0 Введена.

Код the_widget() WP 6.1.1

function the_widget( $widget, $instance = array(), $args = array() ) {
	global $wp_widget_factory;

	if ( ! isset( $wp_widget_factory->widgets[ $widget ] ) ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: %s: register_widget() */
				__( 'Widgets need to be registered using %s, before they can be displayed.' ),
				'<code>register_widget()</code>'
			),
			'4.9.0'
		);
		return;
	}

	$widget_obj = $wp_widget_factory->widgets[ $widget ];
	if ( ! ( $widget_obj instanceof WP_Widget ) ) {
		return;
	}

	$default_args          = array(
		'before_widget' => '<div class="widget %s">',
		'after_widget'  => '</div>',
		'before_title'  => '<h2 class="widgettitle">',
		'after_title'   => '</h2>',
	);
	$args                  = wp_parse_args( $args, $default_args );
	$args['before_widget'] = sprintf( $args['before_widget'], $widget_obj->widget_options['classname'] );

	$instance = wp_parse_args( $instance );

	/** This filter is documented in wp-includes/class-wp-widget.php */
	$instance = apply_filters( 'widget_display_callback', $instance, $widget_obj, $args );

	if ( false === $instance ) {
		return;
	}

	/**
	 * Fires before rendering the requested widget.
	 *
	 * @since 3.0.0
	 *
	 * @param string $widget   The widget's class name.
	 * @param array  $instance The current widget instance's settings.
	 * @param array  $args     An array of the widget's sidebar arguments.
	 */
	do_action( 'the_widget', $widget, $instance, $args );

	$widget_obj->_set( -1 );
	$widget_obj->widget( $args, $instance );
}
1 комментарий
    Войти