Функция parent_dropdown()
в WordPress предназначена для создания выпадающего списка страниц, где пользователи могут выбирать родительскую страницу для текущей страницы или записи. Эта функция полезна при необходимости предоставить пользователю возможность выбора родительской страницы из списка на административной панели WordPress.
Функция parent_dropdown()
формирует HTML-код для <select>
элемента, содержащего <option>
элементы, представляющие дочерние страницы заданной родительской страницы. Функция также может рекурсивно выводить дочерние страницы для каждой из найденных дочерних страниц, создавая полное дерево дочерних страниц.
parent_dropdown( int $default_page, int $parent_page, int $level, int|WP_Post $post = null ): void|false
Параметры функции
Функция parent_dropdown()
принимает несколько параметров:
$default
(число): ID страницы, которая будет выбрана в выпадающем списке по умолчанию. Значение по умолчанию —0
.$parent
(число): ID родительской страницы, дочерние страницы которой нужно отобразить. Значение по умолчанию —0
.$level
(число): Уровень текущих элементов<option>
. Этот параметр используется для создания визуального отступа и обычно не указывается вручную, так как он используется функцией для рекурсивного отображения. Значение по умолчанию —0
.$post
(число/WP_Post): ID страницы или объектWP_Post
, которую следует исключить из списка. Значение по умолчанию —null
, что означает исключение текущей страницы.
Возвращаемое значение
Функция возвращает null
или false
, если дочерние страницы отсутствуют. Если дочерние страницы имеются, функция сразу выводит HTML-код на экран.
Обратите внимание:
Функция работает только в административной части WordPress. Если требуется использовать её на фронтенде, необходимо подключить соответствующий файл:
require_once ABSPATH . 'wp-admin/includes/template.php';
Пример использования
Ниже представлен пример использования функции parent_dropdown()
для вывода выпадающего списка дочерних страниц на странице редактирования:
<select name="my-page">
<?php parent_dropdown(12, 45); ?>
</select>
Вывод:
<select name="my-page">
<option class='level-0' value='101'>Дочерняя страница A</option>
<option class='level-0' value='102'>Дочерняя страница B</option>
<option class='level-1' value='103'> Дочерняя страница A, дочерней страницы B</option>
<option class='level-0' value='104'>Дочерняя страница C</option>
</select>
Как это работает
- Создание выпадающего списка: Функция
parent_dropdown()
генерирует HTML для элемента<select>
, заполняя его дочерними страницами, которые могут быть установлены как родительские. - Рекурсивный вывод: Функция рекурсивно обрабатывает дочерние страницы для каждой найденной дочерней страницы, создавая полный список всех доступных дочерних страниц.
- Исключение текущей страницы: При необходимости можно исключить текущую страницу из списка, передав её ID в параметре
$post
.
Практический пример
Для использования функции parent_dropdown()
вам нужно вызвать её в админ-панели WordPress, обычно в контексте создания или редактирования страниц. Ниже приведен пример кода, показывающий, как использовать эту функцию в метабоксе.
function my_custom_meta_box() {
add_meta_box(
'my_meta_box_id', // ID метабокса
'Выберите родительскую страницу', // Заголовок метабокса
'display_my_meta_box', // Функция для отображения контента метабокса
'page', // Тип поста (страница)
'side' // Расположение метабокса
);
}
add_action('add_meta_boxes', 'my_custom_meta_box');
function display_my_meta_box($post) {
// Получаем текущее значение родительской страницы
$parent_id = $post->post_parent;
// Выводим выпадающий список родительских страниц
wp_dropdown_pages(array(
'name' => 'page_parent', // Имя поля
'selected' => $parent_id, // Выбранное значение
'show_option_none' => __('Нет родителя'), // Текст для опции "нет родителя"
'echo' => 1 // Отображение списка
));
}
// Сохраняем выбранное значение
function save_my_meta_box_data($post_id) {
// Проверяем наличие данных
if (isset($_POST['page_parent'])) {
// Сохраняем выбранную родительскую страницу
$parent_id = intval($_POST['page_parent']);
wp_update_post(array(
'ID' => $post_id,
'post_parent' => $parent_id
));
}
}
add_action('save_post', 'save_my_meta_box_data');
Как это работает
- Добавление метабокса: Функция
my_custom_meta_box
добавляет метабокс на страницу редактирования страниц. - Отображение метабокса: Функция
display_my_meta_box
выводит выпадающий список с родительскими страницами. - Сохранение данных: Функция
save_my_meta_box_data
сохраняет выбранное значение при сохранении страницы.
Заключение
Функция parent_dropdown()
предоставляет инструмент для управления иерархией страниц в WordPress, делая процесс выбора родительских страниц удобным и интуитивно понятным. С её помощью администраторы могут легко создавать выпадающие списки, которые отображают все дочерние страницы, упрощая организацию контента и поддержание структуры сайта.