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 | Введено. |