get_pages()
Отримує дані сторінок (деревоподібних типів записів) як масиву об’єктів. Кешує результат в об’єктний кеш.
Отримані дані потрібно обробляти окремо через foreach або ще.
Вкажіть параметр post_type, щоб отримати дані інших типів записів.
Функція працює лише з деревоподібними типами записів! Якщо вказати post_type = post, функція поверне false.
Для отримання даних про «плоскі» типи записів використовуйте функцію get_posts() .
Використовуйте wp_list_pages() , щоб вивести заголовки сторінок у деревоподібному вигляді.
(дуже повільно) | 50000 разів – 6.05 сек
(швидко) |
PHP 7.1.2, WP 4.7.3
Хуки з функції
Повертає
WP_Post[]|int[]|false. Масив об’єктів WP_Post . false коли:
- Зазначений тип запису не є ієрархічним.
- Зазначений статус запису не зареєстрований, див. get_post_stati() .
Шаблон використання
$ pages = get_pages ([
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'meta_key' => '',
'meta_value' => '',
'authors' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish',
]);
foreach( $pages as $post ){
setup_postdata($post);
// Формат виведення
}
wp_reset_postdata();Використання
$ pages = get_pages ($ args);
- $args
(рядок/масив) - Список аргументів, відповідно до яких буде отримано результат.
За замовчуванням: встановлені
Аргументи параметра $args
-
post_type
(string) - Тип запису, з яким буде працювати функція.
Default: ‘page’ -
post_status
(рядок/масив) - Перелік статусів сторінок, які мають бути включені до висновку. Вказуємо через кому:
'publish,private'
За замовчуванням: ‘publish’ -
exclude
(рядок/масив) - ID постів, які потрібно виключити з вибірки. Можна вказувати через кому, ін.
exclude=’3,7,31′ або масиві.
За замовчуванням: array() -
exclude_tree
(число) - Параметр протилежний
child_of, вирізує всю гілку сторінок, починаючи з зазначеної в цьому параметрі, вирізує його та всі рівні дочірніх сторінок. У цьому параметрі вказуємо ID “верхньої” сторінки.
За замовчуванням: array() -
include
(рядок/масив) ID постів, які потрібно отримати, потрібно розділяти комами або пробілами: include=’45,63,78,94,128,140′ .
Важливо: встановлення цього параметра скасовує параметри:
child_of,parent,exclude,meta_key,meta_valueта встановлюєhierarchical = false.За замовчуванням: array()
-
child_of
(число) ID сторінки, дочірні сторінки якої потрібно отримати. Отримає всю ієрархію (не лише першу вкладеність, другий, третій… n-ний рівень).
Важливо: Параметр скасовується, якщо вказано параметр
include.Важливо: З цим параметром не можна використовувати параметр
number, тому що для отримання всієї ієрархії спочатку робиться запит на отримання всіх сторінок зазначеного типу, а потім з них вибираються відповідні за допомогою функції get_page_children($child_of, $pages) .За замовчуванням: 0 (не встановлено)
-
parent
(число/масив) ID батьківської сторінки. Можна вказати кілька ID у масиві. Отримає ті сторінки, у яких батько ( post_parent ) зазначений у цьому параметрі.
Важливо! Якщо цей параметр вказано, то примусово встановлюється
hierarchical = false.Різниця з параметром
child_ofу цьому, що цей параметр повертає лише дочірні сторінки, ще вкладених у яких, тобто. повертає один рівень.За замовчуванням: -1 (не залежить від батька)
-
hierarchical
(логічний) Визначає, як виводити сторінки:
- true (або 1) – дочірні з відступом від батьківської (за замовчуванням).
- false (або 0) – виводити все в один ряд.
Важливо: примусово встановлюється
hierarchical = falseколи вказані будь-які з параметрів:parent,include. Робиться так, тому що ці параметри є взаємовиключними (якщо подумати).Типово: true
-
meta_key
(рядок) - Виводить лише ті сторінки, які мають вказаний у цьому параметрі ключ (назва довільного поля).
За замовчуванням: ” -
meta_value
(рядок) - Виводить лише ті сторінки, які мають вказане в цьому параметрі значення довільного поля. Використовується у зв’язці з
meta_key .
За замовчуванням: ” Виведе сторінки, опубліковані вказаним автором.
Нотатка: get_posts() використовує параметр
authorзамістьauthors.За замовчуванням: ”
-
number
(число) Вкажіть обмеження щодо кількості сторінок, що виводяться. Вкаже у запиті SQL LIMIT. За замовчуванням – без обмежень.
Цей параметр не можна використовувати разом із
child_of.Нотатка: get_posts() використовує параметр
numberpostsзамістьnumber.За замовчуванням: -1
-
offset
(число) - Вкажіть скільки сторінок ви хотіли б пропустити із зазначеної вибірки, тобто. вкажемо 5 та 5 верхніх сторінок, які могли б бути, будуть зрізані. Вимагає параметр
number.
За замовчуванням: 0 -
sort_column
(рядок) Яким полем сортуватися сторінки. У цьому параметрі можна використовувати будь-яке поле з таблиці wp_posts .
Можна вказати кілька полів через кому:
menu_order, post_title. Можливі значення:'author' 'post_author' 'date' 'post_date' 'title' 'post_title' 'name' 'post_name' 'modified' 'post_modified' 'modified_gmt' 'post_modified_gmt' 'menu_order' 'parent' 'post_parent' 'ID' 'rand' 'comment_count'
Поля з префіксом
post_можна вказати без цього префікса, наприклад sort_column = title .За замовчуванням: за абеткою (заголовки сторінок)
-
sort_order
(рядок) У якому напрямі впорядкувати, вказане у параметрі $orderby, поле:
ASC– По порядку (від меншого до більшого, абвг).DESC– у зворотному порядку (від більшого до меншого, гвба).
Нотатка: get_posts() використовує параметр order замість sort_order
Типово: ASC
Приклади
#1 Показ сторінок у списку, що випадає
У цьому прикладі ми створимо список, що випадає, з усіма сторінками. Посилання на сторінку ми отримуємо функцією get_page_link() , в якій надаємо ID сторінки:
<select name="page-dropdown"
onchange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo esc_attr( __( 'Select page' ) ); ?></option>
<?php
$pages = get_pages();
foreach( $pages as $page ){
echo '<option value="' . get_page_link( $page->ID ) . '">'. esc_html($page->post_title) .'</option>';
}
?>
</select>#2 Показ дочірніх сторінок
Виведемо динамічний перелік дочірніх сторінок. Якщо ми розташуємо його наприкінці статті, то в нас вийде щось на кшталт категорій, де під основним контентом сторінки будуть йти всі дочірні сторінки:
<?php
$ mypages = get_pages ([
'child_of' => $post->ID,
'sort_column' => 'post_date',
'sort_order' => 'desc'
]);
foreach( $mypages as $page ) {
$content = $page->post_content;
// пропустимо сторінку без контенту
if (! $content) continue;
$content = apply_filters( 'the_content', $content );
?>
<h2><a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo $page->post_title; ?></a></h2>
<div class="entry"><?php echo $content; ?></div>
<?php
}#3 Сторінки із вказаним шаблоном
Цей приклад показує як отримати сторінки для якого встановлено файл шаблону page-tpl.php. Так як назва файлу шаблону зберігається в метаполі _wp_page_template, то нам потрібно отримати всі сторінки, що мають вказане метаполе.
$ pages = get_pages ([
'meta_key' => '_wp_page_template',
'meta_value' => 'page-tpl.php',
'hierarchical' => 0
]);
foreach( $pages as $page ){
echo "$page->post_title <br>";
}Замість get_pages() можна використовувати get_posts() .
нотатки
- Global. wpdb. $wpdb WordPress database abstraction object.
список змін
| З версії 1.5.0 | Введено. |