WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Купить персональные IPV4 и IPV6 прокси

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>

Заметки

  • Global. wpdb. $wpdb WordPress database abstraction object.

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

С версии 1.5.0 Введена.
С версии 4.4.0 $post argument was added.

Код parent dropdown: wp-admin/includes/template.php WP 5.2.2

<?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)

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

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться