Как изменить структуру (разметку) паганации?
Здравствуйте.
Как поменять стандартную разметку паганации:
<nav class="navigation %1$s" role="navigation"> <h2 class="screen-reader-text">%2$s</h2> <div class="nav-links">%3$s</div> </nav>
На разметку, которая используется в макете (макет сверстан на bootstrap 4) и имеет стандартный вид:
<nav aria-label="Page navigation example"> <ul class="pagination"> <li class="page-item"><a class="page-link" href="#">Назад</a></li> <li class="page-item"><a class="page-link" href="#">1</a></li> ... <li class="page-item"><a class="page-link" href="#">Далее</a></li> </ul> </nav>
Пробовал воспользоваться приемом, приведенным из функции the_posts_pagination() (где удаляется h2) и адаптировать под себя:
add_filter('navigation_markup_template', 'my_navigation_template', 10, 2 ); function my_navigation_template( $template, $class ){ return ' <nav aria-label="..."> <ul class="pagination"> <li class="page-item"> <a class="page-link">%3$s</a> </li> </ul> </nav> '; }
Получается не совсем то, что нужно:
Нашел такое вариант решения, почти устраивает. Но к сожалению выводит, только переход на предыдущую и следующую страницы. Между ними страниц нет:
add_filter( 'intermediate_image_sizes_advanced', 'remove_default_image_sizes' ); function my_the_post_navigation( $args = array() ) { $navigation = ''; // Don't print empty markup if there's only one page. if ( $GLOBALS['wp_query']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array( 'prev_text' => __( 'Older posts' ), 'next_text' => __( 'Newer posts' ), 'screen_reader_text' => __( 'Posts navigation' ), ) ); $prev_link = get_next_posts_link( $args['prev_text'] ); $prev_link = str_replace( '<a ', '<a class="page-link" ', $prev_link ); $next_link = get_previous_posts_link( $args['next_text'] ); $next_link_finish = str_replace( '<a ', '<a class="page-link" ', $next_link ); if ( $prev_link ) { $navigation .= '<li class="page-item">' . $prev_link . '</li>'; } if ( $next_link ) { $navigation .= '<li class="page-item">' . $next_link_finish . '</li>'; } $navigation = _navigation_markup( $navigation, 'posts-navigation' ); } echo $navigation; } add_filter( 'navigation_markup_template', 'my_navigation_template', 10, 2 ); function my_navigation_template( $template, $class ) { return ' <nav aria-label="..."> <h2 class="screen-reader-text">%2$s</h2> <ul class="pagination"> %3$s </ul> </nav> '; }
Получается так:
Возможно ли доработать этот вариант, что бы между этими ссылками выводились ссылки на страницы, как при использование штатной
Можно самописной функцией воспользоваться.
Вот этой сто лет пользуюсь, вместо стандартной
Нужно на досуге попробовать. Совсем забыл отписаться вчера, смог реализовать нужную разметку пагинации через str_replace.
В целом добился добился решения задачи, разметка пагинации стала выглядеть, как в разметки bootstrap 4.3
Но вашу вариант обязательно попробую! Спасибо