wp_page_menu() WP 2.7.0

Виводить список постійних сторінок блогу як посилання на відповідні сторінки. Аналог wp_list_pages(), тільки можна додати посилання “на головну” в початок.

Функція зазвичай використовується в шапці та бічній панелі для виведення меню постійних сторінок. Однак, може також використовуватися в інших місцях шаблону.

Працює на основі:
wp_list_pages()

Хуки з функції

Повертає

null|Строку. Виводить на екран HTML код меню. Якщо параметр echo поставлений в false, то повертає рядок.

Використання

wp_page_menu ($ args);

Аргументи параметра $args

Повний перелік аргументів дивіться в описі функції wp_list_pages() . Нижче деякі з них:

show_home
(логічний)
Посилання “На головну” на початку списку сторінок. 0 (false) – не показувати посилання; 1 (true) – додати посилання.


Типово: false
depth
(число)

Цей параметр контролює рівень вкладеності дочірніх сторінок, які будуть включені до списку. За замовчуванням 0 (показати всі дочірні сторінки, включаючи подвійну та більше вкладеність).

  • 0(за замовчуванням) Включати до списку всі рівні вкладених сторінок і показувати їх у деревоподібному вигляді.

  • -1Включити до списку всі рівні вкладених сторінок, але не показувати вкладеність (древоподібне відображення списку вимикається, список буде показаний як загальний).

  • 1Показати лише перші вкладені сторінки, тобто. дочірні сторінки першого рівня.

  • 2, 3 и т.д.Включити до списку дочірні сторінки 2, 3 тощо. рівня…
sort_column
(рядок)

Сортувати список за вказаними полями. За замовчуванням список сортується за порядковим номером, вказаним при публікації сторінки (menu order) та за заголовками (post_title), в алфавітному порядку. Для сортування можна використовувати будь-яке значення стовпця таблиці wp_post . Можна вказувати кілька параметрів через кому, відповідно до яких потім буде відсортовано список. Деякі популярні поля сортування:

  • post_title– сортувати за заголовком (в алфавітному порядку);
  • menu_order– сортувати за порядком, що вказується на адмін-панелі на сторінці редагування “постійної сторінки”;
  • post_date– Сортувати за датою створення “постійної сторінки”;
  • post_modified– сортувати за датою зміни сторінки;
  • ID– Сортувати за ідентифікатором запису в Базі Даних (за ID);
  • post_author– Сортувати за ID авторів;
  • post_name– сортувати в алфавітному порядку за альтернативним ім’ям посту (зазвичай транслітерація заголовка).

За замовчуванням: ‘menu_order, post_title’

menu_class
(рядок)
Назва css класу для тега DIV, що обертає меню HTML (class=”menu”).


За замовчуванням: ‘menu’
menu_id
(рядок)
ID для тега
<div> . З версії 4.4.


За замовчуванням: ”
container
(рядок)
Елемент, який буде містити в собі список сторінок. З версії 4.4.


За замовчуванням: ‘div’
include
(рядок)
Показати лише вказані сторінки. У параметрі через кому потрібно вказати ID постійних сторінок, які потрібно вивести у списку.

Цей параметр скасовує параметри, що стосуються формування списку, оскільки він створює список лише з тих сторінок, які вказані. Скасовуються параметри: exclude, child_of, depth, meta_key, meta_value, authors.


За замовчуванням: ”
exclude
(рядок)
У цьому параметрі вказуємо через кому ID тих сторінок, які ми не хочемо, щоб потрапили до списку, наприклад:
exclude=3,7,31.


За замовчуванням: ”
exclude_tree
(рядок)
Вкажіть через кому ID батьківський сторінок, які ви хочете виключити зі списку. Також будуть виключені всі вкладені (дочірні сторінки) вказаних ID. Тобто. цей параметр виключає зі списку дерево сторінок.

Доданий до версії 2.7.


За замовчуванням: ”
echo
(логічний)
Виводити результат на екран (true) чи повертати для обробки (false).


Типово: true
link_before
(рядок)
Вкажіть текст або HTML код, який буде вставлено перед текстом посилання (всередині тега
<a>). Доданий до версії 2.7.


За замовчуванням: “”
link_after
(рядок)
Вкажіть текст або HTML код, який буде вставлено після тексту посилання (всередині тега
<a>). Доданий до версії 2.7.


За замовчуванням: “”
before
(рядок)
HTML або текст, який розташований перед меню. З версії 4.4.


За замовчуванням: ‘ <ul>
after
(рядок)
HTML або текст, який розташовує після меню. З версії 4.4.


За замовчуванням: ‘ </ul>
item_spacing
(рядок)
Залишати чи ні перенесення рядків у HTML коді меню. Можливо:
preserveабо
discard. C WP 4.7.


Типово: ‘preserve’
Walker
(Walker)
Примірник об’єкта Walker, який будуватиме меню. З версії 4.4.


За замовчуванням: пусто (Walker_Page)

Приклади

0

#1 Посилання на головну

Додамо до списку посилання на головну сторінку сайту (show_home=1). Також, виключимо сторінки (exclude=5,9,23), додамо свій клас до div (menu_class=page-navi) і впорядкуємо посилання по колонці (sort_column=menu_order):

<h2>Меню сторінок</h2>
<?php wp_page_menu('show_home=1&exclude=5,9,23&menu_class=page-navi&sort_column=menu_order'); ?>
0

#2 Вкажемо назву посилання на головну сторінку (анкор):

<?php wp_page_menu( 'show_home=Домашня сторінка' ); ?>

або так

<?php wp_page_menu( array( 'show_home' => 'Домашня сторінка' ) ); ?>
0

#3 Виведемо лише посилання на головну сторінку:

wp_page_menu('show_home=1&include=9999');

CSS класи, що використовуються в меню

CSS класи додаються в <li>елементи меню до кожного посилання, залежно від значення в меню.

.page_item – до всіх елементів списку, які ведуть статичну сторінку. Так, для головної сторінки цей клас не вказується.

.page-item-$ID – до всіх елементів списку. $ID – це ID сторінки.

.current_page_item – для сторінки, яка проглядається в даний момент.

.current_page_parent – для батьківської сторінки сторінки, яка переглядається в даний момент (поточна сторінка буде дочірньою).

.current_page_ancestor – для всіх сторінок, які знаходяться на одному рівні з сторінкою, що переглядається.

список змін

З версії 2.7.0Введено.
З версії 4.4.0Added menu_id , container , before , after , і walker arguments.
З версії 4.7.0Added the item_spacing argument.

wp page menu WP 6.0.2

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' => '<ul>',
		'after' => '</ul>',
		'item_spacing' => 'discard',
		'walker' => '',
	);
	$ args = wp_parse_args ($ args, $ defaults);

	if ( ! in_array( $args['item_spacing'], array( 'preserve', 'discard' ), true ) ) {
		// Invalid value, fall back to default.
		$args['item_spacing'] = $defaults['item_spacing'];
	}

	if ( 'preserve' === $args['item_spacing'] ) {
		$t = "t";
		$n = "n";
	} else {
		$ t = '';
		$n = '';
	}

	/**
	 * Filters the arguments used to generate a page-based menu.
	 *
	 * @ Since 2.7.0
	 *
	 * @see wp_page_menu()
	 *
	 * @param array $args На array of page menu arguments. See wp_page_menu()
	 * for information on accepted arguments.
	 */
	$args = apply_filters( 'wp_page_menu_args', $args );

	$menu = '';

	$list_args = $args;

	// Show Home in the menu.
	if ( ! empty( $args['show_home'] ) ) {
		if ( true === $args['show_home'] || '1' === $args['show_home'] || 1 === $args['show_home'] ) {
			$text = __('Home');
		} else {
			$text = $args['show_home'];
		}
		$class = '';
		if ( is_front_page() && ! is_paged() ) {
			$class = 'class="current_page_item"';
		}
		$menu. = '<li'. $class. '><a href="' . home_url( '/' ) . '">' . $args['link_before'] . $text. $args['link_after'] . '</a></li>';
		// Якщо front page is a page, add it to exclude list.
		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'] );

	// Fallback in case `wp_nav_menu()` був названий без container.
	if ( empty( $container ) ) {
		$container = 'div';
	}

	if ($menu) {

		// wp_nav_menu() doesn't set before and after.
		if ( isset( $args['fallback_cb'] ) &&
			'wp_page_menu' === $args['fallback_cb'] &&
			'ul' !== $container ) {
			$args['before'] = "<ul>{$n}";
			$args['after'] = '</ul>';
		}

		$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}";

	/**
	 * Filters HTML output of page-based menu.
	 *
	 * @ Since 2.7.0
	 *
	 * @see wp_page_menu()
	 *
	 * @param string $menu HTML output.
	 * @param array $args An array of arguments. See wp_page_menu()
	 * for information on accepted arguments.
	 */
	$menu = apply_filters( 'wp_page_menu', $menu, $args);

	if ( $args['echo'] ) {
		echo $menu;
	} else {
		return $menu;
	}
}

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

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