WordPress как на ладони
wordpress jino

parent_dropdown() WP 1.5.0

Получает список дочерних страниц указанной родительской страницы. Выводит HTML список элементов <option> для элемента <select>.

Результат нужно оборачивать тегом <select>.

Выводит также дочерние страницы для каждой полученной дочерней страницы, если они есть. Эта рекурсия продолжается до конца, т.е. будет получено все дерево дочерних страниц...

Функция работает только с типом записей page. Если нужен другой тип записей, то используйте код функции для создания собственной аналогичной функции...

Функция определена только в админке. Если нужна во фронте, подключите этот файл:

require_once ABSPATH .'wp-admin/includes/template.php';
✈ 1 раз = 0.001482с = очень медленно | 50000 раз = 52с = очень медленно

Хуков нет.

Возвращает

Null/false. False, если дочерних страниц нет. Если есть, то сразу выведет на экран HTML код.

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

parent_dropdown( $default, $parent, $level, $post );
$default(число)
ID страницы которая будет выбрана в списке.
По умолчанию: 0
$parent(число)
ID родительской страницы, дочерние которой нужно получить.
По умолчанию: 0
$level(число)
Текущий уровень элементов <option>. Если указать 1, то элементам будет добавлен визуальный отступ слева. Нужно чтобы встраивать элементы в уже существующий список. Обычно этот параметр не указывается, он используется самой функцией в рекурсии.
По умолчанию: 0
$post(число/WP_Post)
ID страницы, которую нужно исключить из списка. По умолчанию указывается текущая страница.
По умолчанию: null

Примеры

#1 Выведем выпадающий список дочерних страниц

<?php
// чтобы работало во фронт-энде
// require_once ABSPATH .'wp-admin/includes/template.php';
?>

<select name="my_page">
	<?php parent_dropdown( 25, 280 ); ?>
</select>

Получим:

<select name="my_page">
	<option class='level-0' value='3484' > Дочерняя страница 1</option>
	<option class='level-0' value='1544' > Дочерняя страница 2</option>
	<option class='level-1' value='1787' >    Дочерняя страница 1, дочерней страницы 2</option>
	<option class='level-0' value='3644' > Дочерняя страница 3</option>
</select>

Код parent dropdown: wp-admin/includes/template.php VER 4.9.1

<?php
function parent_dropdown( $default = 0, $parent = 0, $level = 0, $post = null ) {
	global $wpdb;
	$post = get_post( $post );
	$items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) );

	if ( $items ) {
		foreach ( $items as $item ) {
			// A page cannot be its own parent.
			if ( $post && $post->ID && $item->ID == $post->ID )
				continue;

			$pad = str_repeat( '&nbsp;', $level * 3 );
			$selected = selected( $default, $item->ID, false );

			echo "\n\t<option class='level-$level' value='$item->ID' $selected>$pad " . esc_html($item->post_title) . "</option>";
			parent_dropdown( $default, $item->ID, $level +1 );
		}
	} else {
		return false;
	}
}

Cвязанные функции

Из метки: _dropdown (select options list)

Еще из раздела: Страницы

parent_dropdown Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр