функция since 2.7.0

wp_page_menu()

Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.

Сигнатура

wp_page_menu( array|string $args = array() ): void|string

Описание

Аргументы перечислены ниже, часть из них предназначена для функции wp_list_pages() .
Подробнее об этих аргументах смотрите в упомянутой функции.

Оригинал (английский)

The arguments are listed below and part of the arguments are for wp_list_pages() function.
Check that function for more info on those arguments.

Параметры

$args array|string необязательный = array()
Массив или строка аргументов для генерации меню страниц. Дополнительные аргументы смотрите в wp_list_pages() . sort_column stringКак сортировать список страниц. Принимает имена столбцов записи. По умолчанию 'menu_order, post_title'. menu_id stringID для div, содержащего список страниц. По умолчанию — пустая строка. menu_class stringКласс для элемента, содержащего список страниц. По умолчанию 'menu'. container stringЭлемент, используемый в качестве контейнера списка страниц. По умолчанию 'div'. echo boolВыводить список или возвращать его. Принимает true (вывод) или false (возврат). По умолчанию true. show_home int|bool|stringОтображать ли ссылку на главную страницу. Можно просто ввести текст, который вы хотите показать для ссылки на главную. 1|true по умолчанию даёт 'Home'. link_before stringHTML или текст, добавляемый перед текстом $show_home . link_after stringHTML или текст, добавляемый после текста $show_home . before stringHTML или текст, добавляемый перед меню. По умолчанию —
    . after stringHTML или текст, добавляемый после меню. По умолчанию —
. item_spacing stringСохранять ли пробельные символы в HTML меню. Принимает 'preserve' или 'discard'. По умолчанию 'discard'. walker WalkerЭкземпляр Walker для вывода списка страниц. По умолчанию пусто, что приводит к использованию экземпляра Walker_Page.

Возвращаемое значение

void|string

'echo' 'echo'

Исходный код

wp-includes/post-template.php:1426

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 An 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="' . esc_url( home_url( '/' ) ) . '">' . $args['link_before'] . $text . $args['link_after'] . '</a></li>';
		// If the front page is a page, add it to the 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()` was called without a 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 the HTML output of a page-based menu.
	 *
	 * @since 2.7.0
	 *
	 * @see wp_page_menu()
	 *
	 * @param string $menu The 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;
	}
}

История изменений

ВерсияОписание
4.7.0 Added the item_spacing argument.
4.4.0 Added menu_id, container, before, after, and walker arguments.
2.7.0 Introduced.

Что будем искать? Например,Продвижение

Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.