wp_page_menu

Позволяет изменить HTML-вывод меню на основе страниц
Хук WordPress
INT 2.7.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Изменение HTML-вывода меню страницы
  4. Сортировка страниц по дате
  5. Исключение определенных страниц из меню
  6. Включение только страниц с определенным мета-ключом и значением
  7. Вывод только дочерних страниц определенного родителя
  8. Вопросы и ответы
  9. Как изменить HTML-вывод меню, созданного с помощью хука wp_page_menu?
  10. Как отсортировать страницы в меню, созданном с помощью хука wp_page_menu?
  11. Как исключить определенные страницы из меню, созданного с помощью хука wp_page_menu?
  12. Как включить только определенные страницы в меню, созданное с помощью хука wp_page_menu?
  13. Как изменить порядок сортировки страниц в меню, созданном с помощью хука wp_page_menu?
  14. Как создать иерархическое меню с помощью хука wp_page_menu?
  15. Как изменить количество возвращаемых страниц в меню, созданном с помощью хука wp_page_menu?
  16. Как пропустить определенное количество страниц перед возвращением меню, созданного с помощью хука wp_page_menu?
  17. Связанные элементы

Описание хука

Хук «wp_page_menu» позволяет изменить HTML-код вывода меню на основе страниц.

Этот хук вызывается в функции «wp_page_menu()», которая отвечает за вывод меню на основе страниц. Хук позволяет определить, как будет сформировано и отображено меню на сайте.

При использовании хука «wp_page_menu» можно изменить HTML-код меню, добавить или удалить классы, атрибуты и другие элементы, а также изменить порядок и сортировку страниц в меню.

Использование

apply_filters( 'wp_page_menu', string $menu, array $args )

Хук «wp_page_menu» принимает два параметра: $menu и $args.

$menu (строка) — HTML-код меню.

$args (массив) — массив аргументов. См. функцию «wp_page_menu()» для получения информации о принимаемых аргументах.

  • $menu (строка) — HTML-код меню.
  • $args (массив) — массив аргументов. См. функцию «wp_page_menu()» для получения информации о принимаемых аргументах.
  • child_of (int) — ID страницы, для которой нужно вернуть дочерние и внуковские страницы. Значение по умолчанию: 0.
  • sort_order (строка) — Порядок сортировки страниц. Принимает значения ‘ASC’ (по возрастанию) или ‘DESC’ (по убыванию). Значение по умолчанию: ‘ASC’.
  • sort_column (строка) — По каким столбцам сортировать страницы, через запятую. Принимает значения ‘post_author’, ‘post_date’, ‘post_title’, ‘post_name’, ‘post_modified’, ‘menu_order’, ‘post_modified_gmt’, ‘post_parent’, ‘ID’, ‘rand’, ‘comment_count’. Значение по умолчанию: ‘post_title’.
  • hierarchical (логическое) — Возвращать страницы иерархически или нет. Если false в сочетании с false в $child_of, оба аргумента будут проигнорированы. Значение по умолчанию: true.
  • exclude (массив) — Массив ID страниц, которые нужно исключить.
  • include (массив) — Массив ID страниц, которые нужно включить. Не может использоваться с $child_of, $parent, $exclude, $meta_key, $meta_value или $hierarchical.
  • meta_key (строка) — Включать только страницы с указанным мета-ключом.
  • meta_value (строка) — Включать только страницы с указанным мета-значением. Требуется $meta_key.
  • authors (строка) — Список ID авторов, разделенных запятыми.
  • parent (int) — ID страницы, для которой нужно вернуть прямых потомков. Значение по умолчанию: -1.
  • exclude_tree (строка или массив) — Строка или массив ID страниц, которые нужно исключить.
  • number (int) — Количество страниц для возврата. Значение по умолчанию: 0 (все страницы).
  • offset (int) — Количество страниц для пропуска перед возвратом. Требуется $number. Значение по умолчанию: 0.
  • post_type (строка) — Тип записи для запроса. Значение по умолчанию: ‘page’.
  • post_status (строка или массив) — Список статусов записей для включения. Значение по умолчанию: ‘publish’.
<?php
/**
 * Фильтрует HTML-код меню на основе страниц.
 *
 * @param string $menu HTML-код меню.
 * @param array  $args Массив аргументов.
 * @return string Измененный HTML-код меню.
 */
function custom_page_menu( $menu, $args ) {
    // Ваш код для изменения меню
    return $menu;
}
add_filter( 'wp_page_menu', 'custom_page_menu', 10, 2 );
?>

В приведенном выше примере кода определена пользовательская функция «custom_page_menu», которая принимает два параметра: $menu (HTML-код меню) и $args (массив аргументов).

Внутри функции вы можете изменять HTML-код меню в соответствии с вашими потребностями. После внесения изменений возвращайте измененный HTML-код с помощью оператора «return».

Затем с помощью функции «add_filter()» добавляется фильтр «wp_page_menu», который вызывает пользовательскую функцию «custom_page_menu». Фильтр имеет приоритет 10 и принимает 2 аргумента.

Примеры использования

Изменение HTML-вывода меню страницы


function custom_page_menu( $menu, $args ) {
    // Изменяем HTML-вывод меню страницы
    $menu = str_replace( 'class="menu"', 'class="custom-menu"', $menu );
    return $menu;
}
add_filter( 'wp_page_menu', 'custom_page_menu', 10, 2 );

В данном примере мы используем хук wp_page_menu для изменения HTML-вывода меню страницы. Функция custom_page_menu принимает два параметра: $menu (строка с HTML-выводом меню) и $args (массив аргументов). Внутри функции мы заменяем класс меню с «menu» на «custom-menu» с помощью функции str_replace. Затем мы возвращаем измененный HTML-вывод меню.

Сортировка страниц по дате


function sort_pages_by_date( $args ) {
    // Сортируем страницы по дате в обратном порядке
    $args['sort_order'] = 'DESC';
    $args['sort_column'] = 'post_date';
    return $args;
}
add_filter( 'wp_page_menu_args', 'sort_pages_by_date' );

В этом примере мы используем хук wp_page_menu_args для изменения аргументов функции wp_page_menu и осуществления сортировки страниц по дате. Функция sort_pages_by_date принимает один параметр $args (массив аргументов). Внутри функции мы устанавливаем значения аргументов sort_order и sort_column для сортировки страниц по дате в обратном порядке.

Исключение определенных страниц из меню


function exclude_pages_from_menu( $args ) {
    // Исключаем страницы с ID 2 и 5 из меню
    $args['exclude'] = array( 2, 5 );
    return $args;
}
add_filter( 'wp_page_menu_args', 'exclude_pages_from_menu' );

В этом примере мы используем хук wp_page_menu_args для исключения определенных страниц из меню. Функция exclude_pages_from_menu принимает один параметр $args (массив аргументов). Внутри функции мы устанавливаем значение аргумента exclude равным массиву с ID страниц, которые мы хотим исключить из меню.

Включение только страниц с определенным мета-ключом и значением


function include_pages_with_meta( $args ) {
    // Включаем только страницы с мета-ключом "featured" и значением "true"
    $args['meta_key'] = 'featured';
    $args['meta_value'] = 'true';
    return $args;
}
add_filter( 'wp_page_menu_args', 'include_pages_with_meta' );

В этом примере мы используем хук wp_page_menu_args для включения только страниц с определенным мета-ключом и значением в меню. Функция include_pages_with_meta принимает один параметр $args (массив аргументов). Внутри функции мы устанавливаем значения аргументов meta_key и meta_value для включения только страниц, у которых мета-ключ «featured» имеет значение «true».

Вывод только дочерних страниц определенного родителя


function show_child_pages( $args ) {
    // Выводим только дочерние страницы родителя с ID 10
    $args['child_of'] = 10;
    return $args;
}
add_filter( 'wp_page_menu_args', 'show_child_pages' );

В этом примере мы используем хук wp_page_menu_args для вывода только дочерних страниц определенного родителя в меню. Функция show_child_pages принимает один параметр $args (массив аргументов). Внутри функции мы устанавливаем значение аргумента child_of равным ID родительской страницы, для которой мы хотим вывести только дочерние страницы.

Вопросы и ответы

Как изменить HTML-вывод меню, созданного с помощью хука wp_page_menu?

Для изменения HTML-вывода меню, созданного с помощью хука wp_page_menu, можно использовать фильтр ‘wp_page_menu’. Этот фильтр принимает два параметра: строку $menu с текущим HTML-выводом меню и массив $args с аргументами.

// Пример изменения HTML-вывода меню
function custom_wp_page_menu( $menu, $args ) {
    // Ваш код для изменения HTML-вывода меню
    return $menu;
}
add_filter( 'wp_page_menu', 'custom_wp_page_menu', 10, 2 );

Как отсортировать страницы в меню, созданном с помощью хука wp_page_menu?

Для сортировки страниц в меню, созданном с помощью хука wp_page_menu, можно использовать аргументы ‘sort_order’ и ‘sort_column’ при вызове функции wp_page_menu(). Аргумент ‘sort_order’ определяет порядок сортировки (по возрастанию или убыванию), а аргумент ‘sort_column’ определяет по какому столбцу сортировать страницы.

// Пример сортировки страниц в меню
$args = array(
    'sort_order' => 'DESC', // Сортировка по убыванию
    'sort_column' => 'post_title' // Сортировка по заголовку страницы
);
wp_page_menu( $args );

Как исключить определенные страницы из меню, созданного с помощью хука wp_page_menu?

Для исключения определенных страниц из меню, созданного с помощью хука wp_page_menu, можно использовать аргумент ‘exclude’ при вызове функции wp_page_menu(). Аргумент ‘exclude’ принимает массив идентификаторов страниц, которые необходимо исключить из меню.

// Пример исключения страниц из меню
$args = array(
    'exclude' => array( 1, 2, 3 ) // Исключение страниц с ID 1, 2 и 3
);
wp_page_menu( $args );

Как включить только определенные страницы в меню, созданное с помощью хука wp_page_menu?

Для включения только определенных страниц в меню, созданное с помощью хука wp_page_menu, можно использовать аргумент ‘include’ при вызове функции wp_page_menu(). Аргумент ‘include’ принимает массив идентификаторов страниц, которые необходимо включить в меню.

// Пример включения страниц в меню
$args = array(
    'include' => array( 1, 2, 3 ) // Включение страниц с ID 1, 2 и 3
);
wp_page_menu( $args );

Как изменить порядок сортировки страниц в меню, созданном с помощью хука wp_page_menu?

Для изменения порядка сортировки страниц в меню, созданном с помощью хука wp_page_menu, можно использовать аргументы sort_order и sort_column. Аргумент sort_order принимает значения ‘ASC’ (по возрастанию) или ‘DESC’ (по убыванию), а аргумент sort_column определяет по каким столбцам сортировать страницы.

Пример кода:


$args = array(
    'sort_order' => 'DESC',
    'sort_column' => 'post_title'
);
$menu = wp_page_menu($args);

Как создать иерархическое меню с помощью хука wp_page_menu?

Для создания иерархического меню с помощью хука wp_page_menu, необходимо установить аргумент hierarchical в значение true. Это позволит возвращать страницы в иерархическом порядке.

Пример кода:


$args = array(
    'hierarchical' => true
);
$menu = wp_page_menu($args);

Как изменить количество возвращаемых страниц в меню, созданном с помощью хука wp_page_menu?

Для изменения количества возвращаемых страниц в меню, созданном с помощью хука wp_page_menu, можно использовать аргумент number. Значение аргумента number определяет количество страниц, которые будут возвращены. По умолчанию возвращаются все страницы.

Пример кода:


$args = array(
    'number' => 5
);
$menu = wp_page_menu($args);

Как пропустить определенное количество страниц перед возвращением меню, созданного с помощью хука wp_page_menu?

Для пропуска определенного количества страниц перед возвращением меню, созданного с помощью хука wp_page_menu, можно использовать аргумент offset. Значение аргумента offset определяет количество страниц, которые будут пропущены.

Пример кода:


$args = array(
    'offset' => 3
);
$menu = wp_page_menu($args);

Хук wp_page_menu позволяет изменять порядок сортировки страниц, создавать иерархическое меню, изменять количество возвращаемых страниц и пропускать определенное количество страниц перед возвращением меню. Это полезный инструмент для разработчиков WordPress, позволяющий настраивать вывод меню в соответствии с требованиями проекта.

Связанные элементы

  • Функция wp_list_pages(): выводит список страниц в виде HTML-списка.
  • Функция wp_page_menu(): выводит меню страниц в виде HTML-списка.
  • Функция wp_page_menu_args: фильтр для изменения аргументов функции wp_page_menu().
  • Функция wp_page_menu_items: фильтр для изменения элементов меню, созданных функцией wp_page_menu().
  • Хук wp_list_pages: фильтр для изменения HTML-списка страниц, созданного функцией wp_list_pages.
  • Хук wp_list_pages_excludes: фильтр для изменения списка исключенных страниц в функции wp_list_pages.
  • Хук wp_list_pages_args: фильтр для изменения аргументов функции wp_list_pages.
  • Класс Walker_Page: класс, используемый для создания HTML-списка страниц в функции wp_list_pages.
  • Класс Walker_PageDropdown: класс, используемый для создания выпадающего списка страниц в функции wp_dropdown_pages.
  • Класс Walker_PageDropdown_PostType: класс, используемый для создания выпадающего списка страниц определенного типа записи в функции wp_dropdown_pages.
Обсуждение