Pagination добавляет точки с номерами страниц при использовании 'mid_size' => 0

Привет всем, я пытаюсь преобразовать текущую разбивку на страницы:

  • от: Prev 1 2 3 Next
  • к: Page 1 of 2 -->

Мой текущий код выглядит следующим образом:

 if( ! function_exists( 'my_pagination' ) ) { function my_pagination() { global $wp_query; $big = 999999999; // This needs to be an unlikely integer $paginate_links = paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link($big) ), 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages, 'mid_size' => 0, 'prev_next' => True, 'prev_text' => __('<span class="fa fa-long-arrow-left" aria-hidden="true"></span>'), 'next_text' => __('<span class="fa fa-long-arrow-right" aria-hidden="true"></span>'), 'type' => 'list' ) ); if ( $paginate_links ) { echo '<div class="pagination">'; echo $paginate_links; echo '</div>'; } } } 

Я до сих пор не имел большого опыта работы с разбиением на страницы в WordPress. Я думал, что облегчу себе и просто изменим the_size на 0, а затем просто использую CSS до и после, чтобы добавить page of , например:

 .pagination li:first-child:before { content: "Page " } .pagination li:first-child:after { content: " of" } 

Но потом я замечаю, что WordPress вставляет:

 <li><span class="page-numbers dots">…</span></li> 

Из-за 'mid_size' => 0 , и, очевидно, я мог бы просто использовать li:nth(2) { display: none; } li:nth(2) { display: none; } в CSS. Но тогда еще одна проблема заключается в том, что последний номер страницы – a href и я тоже этого не хочу, поэтому использование всех этих методов работы просто похоже на неудачную работу, а скорее в кодексе, а не в CSS. Я пробовал несколько решений без успеха.

Как отключить добавление:

  • <span class="page-numbers dots">…</span> ?
  • <a href> на последнем номере страницы?
  • Или как вы рекомендуете, я продолжаю изменять текущий массив?

Solutions Collecting From Web of "Pagination добавляет точки с номерами страниц при использовании 'mid_size' => 0"

Вот обходной путь:

Сначала измените тип вывода paginate_links() на:

 'type' => 'array', 

Затем мы можем собрать предыдущую , текущую и следующую части из вывода paginate_links() .

Вот простой пример, где мы ориентируемся на соответствующие классы:

 $next = ''; $current = ''; $prev = ''; foreach( (array) $paginate_links as $link ) { if( false !== strpos( $link, 'prev ' ) ) $prev = $link; elseif( false !== strpos( $link, ' current' ) ) $current = $link; elseif( false !== strpos( $link, 'next ' ) ) $next = $link; } 

Наконец, мы можем построить выход по мере необходимости:

 ! empty( $current ) && printf( '<div class="pagination">%s %s %s %s %d %s</div>', $prev, esc_html__( 'Page', 'my-domain' ), $current, esc_html__( 'of', 'my-domain' ), $wp_query->max_num_pages, $next );