the_widget()

Выводит произвольный виджет в качестве шаблонного тега
Функция WordPress
INT 2.8.0
WordPress Icon

Описание функции

Функция the_widget() используется для вывода произвольного виджета в качестве шаблонного тега. Она позволяет разработчикам WordPress выводить виджеты в любом месте своего сайта, не используя сайдбары или другие виджетные области.

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

the_widget( string $widget, array $instance = array(), array $args = array() )

Функция the_widget() принимает три параметра:

  • $widget (обязательный) — PHP-класс виджета (см. class-wp-widget.php).
  • $instance (необязательный) — настройки экземпляра виджета. По умолчанию: array().
  • $args (необязательный) — массив аргументов для настройки отображения виджета.
  • $widget (string, обязательный) — PHP-класс виджета (см. class-wp-widget.php).
  • $instance (array, необязательный) — настройки экземпляра виджета. По умолчанию: array().
  • $args (array, необязательный) — массив аргументов для настройки отображения виджета.
    • before_widget (string) — HTML-контент, который будет добавлен перед выводом HTML-кода виджета. По умолчанию: <div class="widget %s">, где %s — имя класса виджета.
    • after_widget (string) — HTML-контент, который будет добавлен после вывода HTML-кода виджета. По умолчанию: </div>.
    • before_title (string) — HTML-контент, который будет добавлен перед выводом заголовка виджета. По умолчанию: пустая строка.
    • after_title (string) — HTML-контент, который будет добавлен после вывода заголовка виджета. По умолчанию: пустая строка.
<?php
  // Создаем экземпляр виджета Recent Posts
  $widget = 'WP_Widget_Recent_Posts';
  $instance = array(
    'title' => 'Recent Posts',
    'number' => 5
  );
  $args = array(
    'before_widget' => '<div class="widget">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widget-title">',
    'after_title' => '</h2>'
  );
  // Выводим виджет Recent Posts
  the_widget( $widget, $instance, $args );
?>

В данном примере мы создаем экземпляр виджета «Recent Posts» и настраиваем его с помощью массива $instance. Затем мы определяем массив $args для настройки отображения виджета. Наконец, мы вызываем функцию the_widget() с указанными параметрами, чтобы вывести виджет на странице.

Примеры использования

Вывод виджета с настройками по умолчанию


/**
 * Вывод виджета с настройками по умолчанию.
 * 
 * В данном примере будет выведен виджет с классом "WP_Widget_Calendar" и настройками по умолчанию.
 */
the_widget( 'WP_Widget_Calendar' );

В данном примере используется функция the_widget() для вывода виджета с классом WP_Widget_Calendar и настройками по умолчанию. Функция принимает первым параметром имя класса виджета, а вторым и третьим параметрами можно передать настройки виджета и аргументы для его отображения, но в данном случае они не используются.

Изменение содержимого виджета перед выводом


/**
 * Изменение содержимого виджета перед выводом.
 * 
 * В данном примере будет выведен виджет с классом "WP_Widget_Calendar", 
 * но перед выводом его содержимого будет изменено с помощью фильтра "widget_text_content".
 */
function custom_widget_text_content( $content ) {
    // Изменяем содержимое виджета
    $content = 'Custom Widget Content';
    return $content;
}
add_filter( 'widget_text_content', 'custom_widget_text_content' );
the_widget( 'WP_Widget_Calendar' );

В данном примере используется функция the_widget() для вывода виджета с классом WP_Widget_Calendar. Перед выводом содержимого виджета, мы изменяем его с помощью фильтра widget_text_content. В данном случае, содержимое виджета будет заменено на «Custom Widget Content».

Настройка отображения виджета


/**
 * Настройка отображения виджета.
 * 
 * В данном примере будет выведен виджет с классом "WP_Widget_Calendar", 
 * и будут заданы пользовательские значения для аргументов отображения виджета.
 */
$args = array(
    'before_widget' => '<div class="widget">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widget-title">',
    'after_title' => '</h2>'
);
the_widget( 'WP_Widget_Calendar', array(), $args );

В данном примере используется функция the_widget() для вывода виджета с классом WP_Widget_Calendar. При этом, мы задаем пользовательские значения для аргументов отображения виджета, такие как before_widget, after_widget, before_title и after_title. В данном случае, виджет будет обернут в <div class="widget">, заголовок виджета будет обернут в <h2 class="widget-title">.

Использование пользовательских настроек виджета


/**
 * Использование пользовательских настроек виджета.
 * 
 * В данном примере будет выведен виджет с классом "WP_Widget_Calendar", 
 * и будут заданы пользовательские значения для настроек виджета.
 */
$instance = array(
    'title' => 'Custom Widget Title',
    'show_date' => true
);
the_widget( 'WP_Widget_Calendar', $instance );

В данном примере используется функция the_widget() для вывода виджета с классом WP_Widget_Calendar. При этом, мы передаем пользовательские значения для настроек виджета в виде массива $instance. В данном случае, заголовок виджета будет «Custom Widget Title», а также будет отображаться дата.

Вопросы и ответы

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

HTML-контент, который добавляется перед виджетом, можно изменить с помощью параметра before_widget. По умолчанию, значение этого параметра равно <li id="%1$s" class="widget %2$s">, где %1$s заменяется на имя класса виджета, а %2$s — на список классов виджета.

Чтобы изменить этот HTML-контент, нужно передать новое значение параметра before_widget при вызове функции the_widget(). Например:


$args = array(
    'before_widget' => '<div class="my-widget">',
);
the_widget( 'My_Widget_Class', $instance, $args );

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

HTML-контент, который добавляется после виджета, можно изменить с помощью параметра after_widget. По умолчанию, значение этого параметра равно </li>.

Чтобы изменить этот HTML-контент, нужно передать новое значение параметра after_widget при вызове функции the_widget(). Например:


$args = array(
    'after_widget' => '</div>',
);
the_widget( 'My_Widget_Class', $instance, $args );

Как изменить HTML-контент, который добавляется перед заголовком виджета?

HTML-контент, который добавляется перед заголовком виджета, можно изменить с помощью параметра before_title. По умолчанию, значение этого параметра равно <h2 class="widget-title">.

Чтобы изменить этот HTML-контент, нужно передать новое значение параметра before_title при вызове функции the_widget(). Например:


$args = array(
    'before_title' => '<h3 class="my-widget-title">',
);
the_widget( 'My_Widget_Class', $instance, $args );

Как изменить HTML-контент, который добавляется после заголовка виджета?

Для изменения HTML-контента, который добавляется после заголовка виджета, можно использовать параметр after_title функции the_widget(). По умолчанию, значение этого параметра равно пустой строке.

Пример использования:


$args = array(
    'after_title' => '</h2><div class="widget-content">'
);
the_widget( 'WP_Widget_Calendar', array(), $args );

Как изменить класс виджета?

Для изменения класса виджета можно использовать параметр before_widget функции the_widget(). По умолчанию, значение этого параметра равно '<li id="%1$s" class="widget %2$s">', где %1$s заменяется на ID виджета, а %2$s — на класс виджета.

Пример использования:


$args = array(
    'before_widget' => '<div id="%1$s" class="my-widget %2$s">'
);
the_widget( 'WP_Widget_Calendar', array(), $args );

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

Для изменения настроек экземпляра виджета можно использовать параметр $instance функции the_widget(). По умолчанию, значение этого параметра равно пустому массиву.

Пример использования:


$instance = array(
    'title' => 'My Widget',
    'count' => 5
);
the_widget( 'WP_Widget_Calendar', $instance );

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

Функция the_widget() позволяет выводить произвольные виджеты в шаблоне WordPress. Для изменения настроек отображения виджета можно использовать параметры $args, before_widget, after_widget, before_title и after_title.

Параметр $args является массивом аргументов, которые позволяют настроить отображение виджета. Например, можно указать классы стилей для виджета или добавить дополнительные атрибуты. По умолчанию этот параметр равен пустому массиву.

Параметр before_widget позволяет задать HTML-контент, который будет добавлен перед выводом HTML-кода виджета. По умолчанию используется пустая строка. В этом параметре можно использовать специальную метку %s, которая будет заменена на класс виджета.

Параметр after_widget позволяет задать HTML-контент, который будет добавлен после вывода HTML-кода виджета. По умолчанию используется пустая строка.

Параметр before_title позволяет задать HTML-контент, который будет добавлен перед выводом заголовка виджета. По умолчанию используется пустая строка.

Параметр after_title позволяет задать HTML-контент, который будет добавлен после вывода заголовка виджета. По умолчанию используется пустая строка.

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

Для использования разных классов и настроек для разных виджетов при вызове функции the_widget() можно передать параметры $widget и $instance.

Параметр $widget должен содержать имя PHP-класса виджета (см. файл class-wp-widget.php). Это позволяет указать конкретный виджет, для которого будут применены настройки.

Параметр $instance является массивом настроек конкретного экземпляра виджета. По умолчанию этот параметр равен пустому массиву.

Как использовать the_widget() внутри шаблона?

Для использования функции the_widget() внутри шаблона WordPress необходимо вызвать ее с нужными параметрами. Например, чтобы вывести виджет «My_Widget» с настройками по умолчанию, можно использовать следующий код:


the_widget( 'My_Widget' );

Если необходимо изменить настройки виджета, можно передать массив с настройками вторым параметром:


$instance = array(
    'title' => 'My Widget Title',
    'count' => 5
);
the_widget( 'My_Widget', $instance );

Также можно использовать параметр $args для дополнительной настройки отображения виджета:


$args = array(
    'before_widget' => '<div class="my-widget">',
    'after_widget' => '</div>',
    'before_title' => '<h2>',
    'after_title' => '</h2>'
);
the_widget( 'My_Widget', $instance, $args );

Функция the_widget() позволяет выводить произвольные виджеты в шаблоне WordPress. С помощью параметров $args, before_widget, after_widget, before_title и after_title можно настроить отображение виджета. Также можно использовать разные классы и настройки для разных виджетов, передавая соответствующие параметры $widget и $instance. Функцию the_widget() можно использовать внутри шаблона, передавая необходимые параметры для вывода виджета с нужными настройками.

Связанные элементы

  • Функция register_sidebar(): регистрирует новую боковую панель виджетов.
  • Функция dynamic_sidebar(): выводит содержимое боковой панели виджетов.
  • Функция is_active_sidebar(): проверяет, активна ли указанная боковая панель виджетов.
  • Хук widget_title: позволяет изменить заголовок виджета перед выводом.
  • Хук widget_display_callback: позволяет изменить вывод виджета.
  • Класс WP_Widget: базовый класс для создания виджетов.
  • Класс WP_Widget_Factory: фабрика для создания экземпляров виджетов.
Обсуждение