WordPress как на ладони
wordpress jino

_navigation_markup() WP 4.1.0

Оборачивает переданные ссылки навигации/пагинации в html шаблон.

Используется для стандартного вывода ссылок навигации/пагинации в функциях: the_posts_pagination() и the_posts_navigation().

В этой функции есть полезный хук navigation_markup_template, используя который можно изменить шаблон вывода блока (см. пример).

Хуки из функции:
Возвращает

Строку. HTML шаблон блока навигации.

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

_navigation_markup( $links, $class, $screen_reader_text );
$links(строка) (обязательный)
Ссылки навигации.
$class(строка)
Дополнительные классы к главному блоку <nav>. Классы добавятся к имеющемуся классу navigation.
По умолчанию: 'posts-navigation'
$screen_reader_text(строка)
Название блока навигации при чтения с экрана (для роботов читающих код).
По умолчанию: __( 'Posts navigation' )

Примеры

#1 Получим блок навигации

Допустим мы получили ссылки навигации с помощью paginate_links() и теперь нам нужно вывести эти ссылки в стандартном формате пагинации:

// получаем ссылки пагинации
$links = paginate_links( $args );

if ( $links ) {
	echo _navigation_markup( $links, 'pagination', 'Моя крутая навигация' );
}

#2 Изменение шаблона блока навигации/пагинации

Допустим нам нужно изменить вывод HTML в функциях: the_posts_pagination(), the_posts_navigation(), нужно удалить заголовок H2. Для этого используем хук: 'navigation_markup_template':

add_filter('navigation_markup_template', 'my_navigation_template', 10, 2 );
function my_navigation_template( $template, $class ){
	/*
	Вид базового шаблона:
	<nav class="navigation %1$s" role="navigation">
		<h2 class="screen-reader-text">%2$s</h2>
		<div class="nav-links">%3$s</div>
	</nav>
	*/

	return '
	<nav class="navigation %1$s" role="navigation">
		<div class="nav-links">%3$s</div>
	</nav>    
	';
}

Код navigation markup: wp-includes/link-template.php VER 4.9.4

<?php
function _navigation_markup( $links, $class = 'posts-navigation', $screen_reader_text = '' ) {
	if ( empty( $screen_reader_text ) ) {
		$screen_reader_text = __( 'Posts navigation' );
	}

	$template = '
	<nav class="navigation %1$s" role="navigation">
		<h2 class="screen-reader-text">%2$s</h2>
		<div class="nav-links">%3$s</div>
	</nav>';

	/**
	 * Filters the navigation markup template.
	 *
	 * Note: The filtered template HTML must contain specifiers for the navigation
	 * class (%1$s), the screen-reader-text value (%2$s), and placement of the
	 * navigation links (%3$s):
	 *
	 *     <nav class="navigation %1$s" role="navigation">
	 *         <h2 class="screen-reader-text">%2$s</h2>
	 *         <div class="nav-links">%3$s</div>
	 *     </nav>
	 *
	 * @since 4.4.0
	 *
	 * @param string $template The default template.
	 * @param string $class    The class passed by the calling function.
	 * @return string Navigation template.
	 */
	$template = apply_filters( 'navigation_markup_template', $template, $class );

	return sprintf( $template, sanitize_html_class( $class ), esc_html( $screen_reader_text ), $links );
}

Cвязанные функции

Из метки: navigation pagination (навигация пагинация)

_navigation_markup 2 коммента
  • smile

    В этой функции есть полезный хук

    и ниже через 1 абзац:

    Хуков нет.

    ...когнитивный диссонанс...

    • Kama5064

      Ошибка в коде была из-за авто-обновления ВП до новой версии...

Здравствуйте, !

Ваш комментарий
Предпросмотр