paginate_links()


Выводит ссылки пагинации для стариц архивов. paginate_links может быть использована для создания пагинации для любых страниц. C версии WP 2.1.0.

Выводит подобную конструкцию: « предыдущая 1 … 3 4 5 6 7 … 9 следующая »

paginate_links() используется в paginate_comments_links().

Возвращает

HTML код.

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

Шаблон использования

$args (строка/массив)
Аргументы для построения пагинации.
По умолчанию: предустановки

Аргументы параметра $args

base (строка)
База для замены по формату. В конструкции: http://example.com/all_posts.php%_% %_% будет заменено значением аргумента format (см. ниже).
По умолчанию: '%_%'
format (строка)
Формат замены.
По умолчанию: '?page=%#%'
total (число)
Общее количество страниц, которые участвуют в пагинации.
По умолчанию: 1
current (число)
Номер текущей страницы пагинации.
По умолчанию: 0
show_all (логический)
Если выставить в true, то в списке ссылок будут показаны все страницы учавствующие в пагинации. По умолчанию показывается только несколько ссылок спереди и сзади номера текущей страницы, количество ссылок регулируется аргументами: end_size и mid_size.
По умолчанию: false
end_size (число)
Сколько номеров показывать сначала и конца («предыдущая 12 … 4 … 89 следующая»).
По умолчанию: 1
mid_size (число)
Сколько номеров показывать до и после текущего номера (… 123 5 678 …).
По умолчанию: 2
prev_next (логический)
Выводить боковые ссылки «предыдущая/следующая страица». По умолчанию выводятся, если ненужно выводить эти ссылки пишем false.
По умолчанию: ture
prev_text (строка)
Текст ссылки «предыдущая страница».
По умолчанию: __('« Previous')
next_text (строка)
Текст ссылки «следующая страница».
По умолчанию: __('Next »')
type (строка)
Формат возвращаемых данных.

  • plain — строка ссылок разделенная пробелами. По умолчанию;
  • array — массив данных (для дальнейшей обработки);
  • list — html список <ul>.

По умолчанию: 'plain'

add_args (логический)
Массив аргументов которые нужно добавить.
По умолчанию: false
add_fragment (строка)
Текст который добавиться ко всем ссылкам.
По умолчанию: ''

Примеры

#1 Пагинация, аналог wp_pagenavi

Чтобы добавить пагинацию на страницу результатов поиска или страницу архивов, используйте такой код:

paginate_links()

из файла: /wp-includes/general-template.php WP 3.9.1

function paginate_links( $args = '' ) {
$defaults = array(
'base' => '%_%', // http://example.com/all_posts.php%_% : %_% is replaced by format (below)
'format' => '?page=%#%', // ?page=%#% : %#% is replaced by the page number
'total' => 1,
'current' => 0,
'show_all' => false,
'prev_next' => true,
'prev_text' => __('« Previous'),
'next_text' => __('Next »'),
'end_size' => 1,
'mid_size' => 2,
'type' => 'plain',
'add_args' => false, // array of query args to add
'add_fragment' => '',
'before_page_number' => '',
'after_page_number' => ''
);

$args = wp_parse_args( $args, $defaults );
extract($args, EXTR_SKIP);

// Who knows what else people pass in $args
$total = (int) $total;
if ( $total < 2 ) return; $current = (int) $current; $end_size = 0 < (int) $end_size ? (int) $end_size : 1; // Out of bounds? Make it the default. $mid_size = 0 <= (int) $mid_size ? (int) $mid_size : 2; $add_args = is_array($add_args) ? $add_args : false; $r = ''; $page_links = array(); $n = 0; $dots = false; if ( $prev_next && $current && 1 < $current ) : $link = str_replace('%_%', 2 == $current ? '' : $format, $base); $link = str_replace('%#%', $current - 1, $link); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $add_fragment; /** * Filter the paginated links for the given archive pages. * * @since 3.0.0 * * @param string $link The paginated link URL. */ $page_links[] = '';
endif;
for ( $n = 1; $n <= $total; $n++ ) : if ( $n == $current ) : $page_links[] = "" . $before_page_number . number_format_i18n( $n ) . $after_page_number . "";
$dots = true;
else :
if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
$link = str_replace('%_%', 1 == $n ? '' : $format, $base);
$link = str_replace('%#%', $n, $link);
if ( $add_args )
$link = add_query_arg( $add_args, $link );
$link .= $add_fragment;

/** This filter is documented in wp-includes/general-template.php */
$page_links[] = "" . $before_page_number . number_format_i18n( $n ) . $after_page_number . "";
$dots = true;
elseif ( $dots && !$show_all ) :
$page_links[] = '' . __( '…' ) . '';
$dots = false;
endif;
endif;
endfor;
if ( $prev_next && $current && ( $current < $total || -1 == $total ) ) : $link = str_replace('%_%', $format, $base); $link = str_replace('%#%', $current + 1, $link); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $add_fragment; /** This filter is documented in wp-includes/general-template.php */ $page_links[] = '';
endif;
switch ( $type ) :
case 'array' :
return $page_links;
break;
case 'list' :
$r .= "

    \n\t

  • ";
    $r .= join("
  • \n\t

  • ", $page_links);
    $r .= "
  • \n

\n";
break;
default :
$r = join("\n", $page_links);
break;
endswitch;
return $r;
}

Добавить комментарий

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