Функция wp_dropdown_pages()
в WordPress предназначена для генерации выпадающего списка страниц в виде HTML-элемента <select>
. Этот элемент можно использовать в административных интерфейсах, формах и других местах, где требуется выбрать страницу из доступных в системе. Работает на основе: get_pages()
wp_dropdown_pages( array|string $args = ” ): string
Параметры функции
Функция wp_dropdown_pages()
принимает массив аргументов или строку запроса. Вот основные параметры, которые можно использовать:
depth
(integer): Определяет, до какой глубины показывать вложенные страницы. Значения могут быть:0
— Показать все уровни дочерних страниц (по умолчанию).-1
— Отображать родительские и дочерние страницы в одном списке без отступов.1
— Показать только страницы первого уровня.2
,3
,4
, и так далее — Показывать страницы до указанной глубины.
child_of
(integer): Показать только дочерние страницы указанной родительской страницы. Указывайте ID родительской страницы.selected
(integer): ID страницы, которую нужно выделить по умолчанию в выпадающем списке.echo
(boolean): Определяет, выводить результат на экран (1
) или возвращать для обработки (0
). По умолчанию1
.name
(string): Значение атрибутаname
у HTML тега<select>
. По умолчанию'page_id'
.show_option_none
(string): Текст для опции с пустым значением в списке. По умолчанию пусто.exclude
(string/integer): ID страниц, которые следует исключить из списка. Указывайте через запятую.exclude_tree
(string/integer): ID страниц и их дочерних страниц, которые не следует показывать в списке.value_field
(string): Поле, значение которого будет использоваться для атрибутаvalue
тега<option>
. По умолчанию'ID'
.
Дополнительные параметры, совместимые с get_pages()
Кроме основных параметров, можно использовать параметры, поддерживаемые функцией get_pages()
:
sort_order
(string): Порядок сортировки страниц. Значения:'ASC'
(по возрастанию) или'DESC'
(по убыванию).sort_column
(string): Столбец для сортировки страниц. По умолчанию'post_title'
.hierarchical
(boolean): Определяет, следует ли отображать страницы в иерархическом порядке. Значение по умолчанию1
.include
(string): Список ID страниц, которые следует включить в список.meta_key
(string): Ключ мета-поля для фильтрации страниц.meta_value
(string): Значение мета-поля для фильтрации страниц.authors
(string): Автор страницы для фильтрации.
Возвращаемое значение:
Строка HTML-кода, представляющая собой выпадающий список.
Шаблон использования:
$args = array(
'depth' => 0,
'child_of' => 0,
'selected' => 0,
'echo' => 1,
'name' => 'page_id',
'show_option_none' => '',
'exclude' => '',
'exclude_tree' => '',
'value_field' => 'ID',
);
wp_dropdown_pages( $args );
Пример 1: Демонстрация работы
<?php wp_dropdown_pages(); ?>
Этот код создаст стандартный выпадающий список страниц с именем page_id
и ID page_id
. В этом списке будут отображены все страницы, доступные в WordPress.
Пример 2: Выпадающий список страниц с кнопкой сабмита
<li id="pages">
<h2><?php _e('Выберите страницу:'); ?></h2>
<form action="<?php bloginfo('url'); ?>" method="get">
<?php wp_dropdown_pages(); ?>
<input type="submit" name="submit" value="Просмотреть" />
</form>
</li>
В этом примере создается форма с выпадающим списком и кнопкой отправки. Пользователи могут выбрать страницу из списка и отправить форму для выполнения действия, связанного с выбранной страницей.
Пример 3: Реализация на практике
<?php
function my_plugin_settings_page() {
?>
<div class="wrap">
<h1>Настройки плагина</h1>
<form method="post" action="options.php">
<?php
settings_fields( 'my_plugin_settings_group' );
do_settings_sections( 'my_plugin_settings_page' );
?>
<table class="form-table">
<tr valign="top">
<th scope="row">Выберите страницу</th>
<td>
<?php
// Создание выпадающего списка страниц
wp_dropdown_pages( array(
'show_option_none' => 'Выберите страницу',
'option_none_value' => '-1',
'name' => 'my_plugin_page',
'id' => 'my_plugin_page',
'class' => 'my-plugin-class',
'selected' => get_option( 'my_plugin_page_option' ),
) );
?>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
// Регистрация настроек и страницы настроек
function my_plugin_register_settings() {
register_setting( 'my_plugin_settings_group', 'my_plugin_page_option' );
add_settings_section( 'my_plugin_settings_section', 'Основные настройки', null, 'my_plugin_settings_page' );
add_settings_field( 'my_plugin_page', 'Страница по умолчанию', 'my_plugin_settings_page_callback', 'my_plugin_settings_page', 'my_plugin_settings_section' );
}
add_action( 'admin_init', 'my_plugin_register_settings' );
function my_plugin_settings_page_callback() {
$value = get_option( 'my_plugin_page_option' );
echo '<input type="text" name="my_plugin_page_option" value="' . esc_attr( $value ) . '" />';
}
function my_plugin_add_admin_menu() {
add_options_page( 'Настройки плагина', 'Мой Плагин', 'manage_options', 'my_plugin_settings_page', 'my_plugin_settings_page' );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );
?>
В этом примере функция wp_dropdown_pages()
используется для создания выпадающего списка страниц в административной форме плагина. Параметр 'selected'
устанавливает выбранное значение по умолчанию на основе опции, сохраненной в базе данных.
Результат
Выпадающий список страниц отображается на странице настроек плагина в административной панели WordPress. Пользователи могут выбрать страницу из списка, и выбранное значение будет сохранено как настройка плагина.
Заключение
Функция wp_dropdown_pages()
предоставляет мощный и гибкий способ создания выпадающих списков страниц в WordPress. С ее помощью можно легко настроить отображение страниц в административных интерфейсах, формах и других частях сайта, где требуется выбор страницы.