WP_PAGE_MENU() │ WP 2.7.0
Функция wp_page_menu() отображает или возвращает список страниц с опциональной ссылкой на главную страницу. В этом руководстве мы рассмотрим, как использовать эту функцию, чтобы создать своё меню страниц в WordPress.
Параметры функции
Эти параметры зависят от функции wp_list_pages(), которую вы можете использовать для получения дополнительной информации о них.
Возврат
- null или string. Если параметр
echoустановлен вtrue, результат будетvoid, иначе это будет HTML-меню.
Использование
wp_page_menu( $args );
Параметры
Вы можете передать массив или строку параметров для генерации меню страниц. По умолчанию это пустой массив.
- sort_column (string): Как сортировать страницы. Принимает названия колонок постов. По умолчанию:
'menu_order, post_title'. - menu_id (string): ID для
div, содержащего список страниц. По умолчанию: пустая строка. - menu_class (string): Класс для элемента, содержащего список страниц. По умолчанию:
'menu'. - container (string): Элемент, который будет использоваться для контейнера с меню. По умолчанию:
'div'. - echo (true|false): Указывает, следует ли выводить список или возвращать его. Принимает
true(вывод) илиfalse(возврат). По умолчанию:true. - show_home (int|true|false|string): Отображать ли ссылку на главную страницу. Можно просто ввести текст, который вы хотите показать для ссылки на главную страницу. По умолчанию:
1илиtrueравняется'Home'. - link_before (string): HTML или текст, который будет предшествовать тексту ссылки на главную страницу. По умолчанию:
''. - link_after (string): HTML или текст, который будет следовать за текстом ссылки на главную страницу. По умолчанию:
''. - before (string): HTML или текст, который будет предшествовать меню. По умолчанию:
'<ul>'. - after (string): HTML или текст, который будет следовать за меню. По умолчанию:
' </ul>'. - item_spacing (string): Сохранять ли пробелы внутри HTML меню. Принимает
'preserve'или'discard'. По умолчанию:'discard'. - walker (Walker): Экземпляр класса Walker, который будет использоваться для перечисления страниц. По умолчанию: пусто, что приводит к использованию экземпляра
Walker_Page.
Примеры использования
Пример 1: Ссылка на домашнюю страницу
Добавим ссылку на домашнюю страницу (параметр show_home=1). Также исключим определенные страницы (например, с ID 5, 9 и 23), добавим свой класс для обёртки div (класс menu_class=page-navi) и отсортируем ссылки по колонке (параметр sort_column=menu_order):
Меню страниц
Пример 2: Указать название ссылки на главную страницу
Вы можете указать, как будет называться ссылка на главную страницу:
Или так:
'Главная') ); ?>
Пример 3: Отображение только ссылки на главную страницу
Если вам нужно только отобразить ссылку на главную страницу:
wp_page_menu( 'show_home=1&include=9999' );
Обновления функции
- С версии 2.7.0: Функция была введена.
- С версии 4.4.0: Добавлены параметры
menu_id,container,before,afterиwalker. - С версии 4.7.0: Добавлен параметр
item_spacing.
Код функции WP_PAGE_MENU
function wp_page_menu( $args = array() ) {
$defaults = array(
'sort_column' => 'menu_order, post_title',
'menu_id' => '',
'menu_class' => 'menu',
'container' => 'div',
'echo' => true,
'link_before' => '',
'link_after' => '',
'before' => '',
'after' => '
',
'item_spacing' => 'discard',
'walker' => '',
);
$args = wp_parse_args( $args, $defaults );
if ( ! in_array( $args['item_spacing'], array( 'preserve', 'discard' ), true ) ) {
$args['item_spacing'] = $defaults['item_spacing'];
}
if ( 'preserve' === $args['item_spacing'] ) {
$t = "t";
$n = "n";
} else {
$t = '';
$n = '';
}
$args = apply_filters( 'wp_page_menu_args', $args );
$menu = '';
$list_args = $args;
if ( ! empty( $args['show_home'] ) ) {
if ( true === $args['show_home'] || '1' === $args['show_home'] || 1 === $args['show_home'] ) {
$text = __( 'Главная' );
} else {
$text = $args['show_home'];
}
$class = '';
if ( is_front_page() && ! is_paged() ) {
$class = 'class="current_page_item"';
}
$menu .= '' . $args['link_before'] . $text . $args['link_after'] . ' ';
if ( 'page' === get_option( 'show_on_front' ) ) {
if ( ! empty( $list_args['exclude'] ) ) {
$list_args['exclude'] .= ',';
} else {
$list_args['exclude'] = '';
}
$list_args['exclude'] .= get_option( 'page_on_front' );
}
}
$list_args['echo'] = false;
$list_args['title_li'] = '';
$menu .= wp_list_pages( $list_args );
$container = sanitize_text_field( $args['container'] );
if ( empty( $container ) ) {
$container = 'div';
}
if ( $menu ) {
if ( isset( $args['fallback_cb'] ) && 'wp_page_menu' === $args['fallback_cb'] && 'ul' !== $container ) {
$args['before'] = "{$n}";
$args['after'] = '
';
}
$menu = $args['before'] . $menu . $args['after'];
}
$attrs = '';
if ( ! empty( $args['menu_id'] ) ) {
$attrs .= ' id="' . esc_attr( $args['menu_id'] ) . '"';
}
if ( ! empty( $args['menu_class'] ) ) {
$attrs .= ' class="' . esc_attr( $args['menu_class'] ) . '"';
}
$menu = "<{$container}{$attrs}>" . $menu . "{$container}>{$n}";
$menu = apply_filters( 'wp_page_menu', $menu, $args );
if ( $args['echo'] ) {
echo $menu;
} else {
return $menu;
}
}
Эта функция позволяет вам легко создавать и настраивать меню страниц на вашем сайте с использованием WordPress. Вы можете изменять параметры в соответствии с вашими потребностями и стилем вашего сайта.