Как использовать функцию wp_page_menu() для создания меню страниц в WordPress

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 . "{$n}"; $menu = apply_filters( 'wp_page_menu', $menu, $args ); if ( $args['echo'] ) { echo $menu; } else { return $menu; } }

    Эта функция позволяет вам легко создавать и настраивать меню страниц на вашем сайте с использованием WordPress. Вы можете изменять параметры в соответствии с вашими потребностями и стилем вашего сайта.

    Leave a Reply

    Ваш адрес email не будет опубликован. Обязательные поля помечены *