функция
since 1.5.0
wp_list_pages()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
wp_list_pages( array|string $args = '' ): void|string
Описание
См. alsoget_pages()
Оригинал (английский)
Параметры
$args
array|string
необязательный
= ''
Массив или строка аргументов для генерации списка страниц. Дополнительные аргументы смотрите в get_pages() .
child_of intПоказать только подстраницы одной страницы по её ID. По умолчанию 0 (все страницы).
authors stringСписок ID авторов, разделённых запятыми. По умолчанию пусто (все авторы).
date_format stringФормат даты PHP для перечисляемых страниц. Зависит от параметра 'show_date'.
По умолчанию — значение опции 'date_format'.
depth intКоличество уровней в иерархии страниц, включаемых в генерируемый список.
Принимает -1 (любая глубина), 0 (все страницы), 1 (только страницы верхнего уровня) и n (страницы до заданной глубины n). По умолчанию 0.
echo boolВыводить ли список страниц. По умолчанию true.
exclude stringСписок ID страниц для исключения, разделённых запятыми.
include arrayСписок ID страниц для включения, разделённых запятыми.
link_after stringТекст или HTML после текста ссылки страницы. По умолчанию null.
link_before stringТекст или HTML перед текстом ссылки страницы. По умолчанию null.
post_type stringТип записи для запроса. По умолчанию 'page'.
post_status string|arrayСписок или массив статусов записей для включения, разделённых запятыми. По умолчанию 'publish'.
show_date stringОтображать ли для каждой страницы дату публикации или изменения. Принимает 'modified' или любое другое значение. Пустое значение скрывает дату.
sort_column stringСписок имён столбцов для сортировки страниц, разделённых запятыми. Принимает 'post_author', 'post_date', 'post_title', 'post_name', 'post_modified', 'post_modified_gmt', 'menu_order', 'post_parent', 'ID', 'rand' или 'comment_count'. По умолчанию 'post_title'.
title_li stringЗаголовок списка. Передача null или пустого значения приведёт к отсутствию заголовка, и список не будет обёрнут тегами неупорядоченного списка
- . По умолчанию 'Pages'.
item_spacing stringСохранять ли пробельные символы в HTML меню. Принимает 'preserve' или 'discard'.
По умолчанию 'preserve'.
walker WalkerЭкземпляр Walker для вывода списка страниц. По умолчанию пусто, что приводит к использованию экземпляра Walker_Page.
Возвращаемое значение
void|string
'echo' 'echo'
Исходный код
wp-includes/post-template.php:1303
function wp_list_pages( $args = '' ) {
$defaults = array(
'depth' => 0,
'show_date' => '',
'date_format' => get_option( 'date_format' ),
'child_of' => 0,
'exclude' => '',
'title_li' => __( 'Pages' ),
'echo' => 1,
'authors' => '',
'sort_column' => 'menu_order, post_title',
'link_before' => '',
'link_after' => '',
'item_spacing' => 'preserve',
'walker' => '',
);
$parsed_args = wp_parse_args( $args, $defaults );
if ( ! in_array( $parsed_args['item_spacing'], array( 'preserve', 'discard' ), true ) ) {
// Invalid value, fall back to default.
$parsed_args['item_spacing'] = $defaults['item_spacing'];
}
$output = '';
$current_page = 0;
// Sanitize, mostly to keep spaces out.
$parsed_args['exclude'] = preg_replace( '/[^0-9,]/', '', $parsed_args['exclude'] );
// Allow plugins to filter an array of excluded pages (but don't put a nullstring into the array).
$exclude_array = ( $parsed_args['exclude'] ) ? explode( ',', $parsed_args['exclude'] ) : array();
/**
* Filters the array of pages to exclude from the pages list.
*
* @since 2.1.0
*
* @param string[] $exclude_array An array of page IDs to exclude.
*/
$parsed_args['exclude'] = implode( ',', apply_filters( 'wp_list_pages_excludes', $exclude_array ) );
$parsed_args['hierarchical'] = 0;
// Query pages.
$pages = get_pages( $parsed_args );
if ( ! empty( $pages ) ) {
if ( $parsed_args['title_li'] ) {
$output .= '<li class="pagenav">' . $parsed_args['title_li'] . '<ul>';
}
global $wp_query;
if ( is_page() || is_attachment() || $wp_query->is_posts_page ) {
$current_page = get_queried_object_id();
} elseif ( is_singular() ) {
$queried_object = get_queried_object();
if ( is_post_type_hierarchical( $queried_object->post_type ) ) {
$current_page = $queried_object->ID;
}
}
$output .= walk_page_tree( $pages, $parsed_args['depth'], $current_page, $parsed_args );
if ( $parsed_args['title_li'] ) {
$output .= '</ul></li>';
}
}
/**
* Filters the HTML output of the pages to list.
*
* @since 1.5.1
* @since 4.4.0 `$pages` added as arguments.
*
* @see wp_list_pages()
*
* @param string $output HTML output of the pages list.
* @param array $parsed_args An array of page-listing arguments. See wp_list_pages()
* for information on accepted arguments.
* @param WP_Post[] $pages Array of the page objects.
*/
$html = apply_filters( 'wp_list_pages', $output, $parsed_args, $pages );
if ( $parsed_args['echo'] ) {
echo $html;
} else {
return $html;
}
}
История изменений
| Версия | Описание |
|---|---|
| 4.7.0 | Added the item_spacing argument. |
| 1.5.0 | Introduced. |

