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

Приклади

0

#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 був added.

Код parent_dropdown() WP 6.0.2

function parent_dropdown( $default_page = 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 && (int) $item->ID === $post->ID ) {
				continue;
			}

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

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *