Доброго времени суток. Вопрос в том, как вывести пагинацию на странице example.com/shop где отображаются с помощью <?php $product = new WP_Query(array('post_type' => 'product', 'posts_per_page' => 12)); ?> Мои продукты. Для блога есть функция wp_pagenavi которую я переделал с этой страницы
wp-kama.ru/id_8/alternativa-wp-pagenavi-bez-lishni... . Но она не работает для страницы shop. Только для news.
Вот функция wp_pagenavi()
function wp_pagenavi($before = '', $after = '', $echo = true, $types = '', $args = array())
{
global $wp_query;
// параметры по умолчанию
$default_args = array(
'text_num_page' => '', // Текст перед пагинацией. {current} - текущая; {last} - последняя (пр. 'Страница {current} из {last}' получим: "Страница 4 из 60" )
'num_pages' => 10, // сколько ссылок показывать
'step_link' => 10, // ссылки с шагом (значение - число, размер шага (пр. 1,2,3...10,20,30). Ставим 0, если такие ссылки не нужны.
'dotright_text' => '…', // промежуточный текст "до".
'dotright_text2' => '…', // промежуточный текст "после".
'back_text' => '<i class="fa fa-angle-left v-middle"></i>', // текст "перейти на предыдущую страницу". Ставим 0, если эта ссылка не нужна.
'next_text' => '<i class="fa fa-angle-right v-middle"></i>', // текст "перейти на следующую страницу". Ставим 0, если эта ссылка не нужна.
'first_page_text' => '0', // текст "к первой странице". Ставим 0, если вместо текста нужно показать номер страницы.
'last_page_text' => '0', // текст "к последней странице". Ставим 0, если вместо текста нужно показать номер страницы.
);
$args = array_merge( $default_args, $args );
extract( $args );
$posts_per_page = (int) $wp_query->query_vars['posts_per_page'];
$paged = (int) $wp_query->query_vars['paged'];
$max_page = $wp_query->max_num_pages;
//проверка на надобность в навигации
if( $max_page <= 1 )
return false;
if( empty( $paged ) || $paged == 0 )
$paged = 1;
$pages_to_show = intval( $num_pages );
$pages_to_show_minus_1 = $pages_to_show-1;
$half_page_start = floor( $pages_to_show_minus_1/2 ); //сколько ссылок до текущей страницы
$half_page_end = ceil( $pages_to_show_minus_1/2 ); //сколько ссылок после текущей страницы
$start_page = $paged - $half_page_start; //первая страница
$end_page = $paged + $half_page_end; //последняя страница (условно)
if( $start_page <= 0 )
$start_page = 1;
if( ($end_page - $start_page) != $pages_to_show_minus_1 )
$end_page = $start_page + $pages_to_show_minus_1;
if( $end_page > $max_page ) {
$start_page = $max_page - $pages_to_show_minus_1;
$end_page = (int) $max_page;
}
if( $start_page <= 0 )
$start_page = 1;
//выводим навигацию
$out = '';
// создаем базу чтобы вызвать get_pagenum_link один раз
$link_base = get_pagenum_link( 99999999 ); // 99999999 будет заменено
$link_base = str_replace( 99999999, '___', $link_base);
$first_url = user_trailingslashit( get_pagenum_link( 1 ) );
$out .= $before . "<ul>\n";
if( $text_num_page ){
$text_num_page = preg_replace( '!{current}|{last}!', '%s', $text_num_page );
$out.= sprintf( " <li class='current'><a>$text_num_page</a></li> ", $paged, $max_page );
}
// назад
if ( $back_text && $paged != 1 )
$out .= '<li><a class="previous i-previous" href="'. str_replace( '___', ($paged-1), $link_base ) .'">'. $back_text .'</a></li>';
// в начало
if ( $start_page >= 2 && $pages_to_show < $max_page ) {
$out.= '<li><a href="'. $first_url .'">'. ( $first_page_text ? $first_page_text : 1 ) .'</a></li>';
if( $dotright_text && $start_page != 2 ) $out .= '<li><a>'. $dotright_text .'</a></li>';
}
// пагинация
for( $i = $start_page; $i <= $end_page; $i++ ) {
if( $i == $paged )
$out .= '<li class="current"><a>'.$i.'</a></li>';
elseif( $i == 1 )
$out .= '<li><a href="'. $first_url .'">1</a></li>';
else
$out .= '<li><a href="'. str_replace( '___', $i, $link_base ) .'">'. $i .'</a></li>';
}
//ссылки с шагом
$dd = 0;
if ( $step_link && $end_page < $max_page ){
for( $i = $end_page+1; $i<=$max_page; $i++ ) {
if( $i % $step_link == 0 && $i !== $num_pages ) {
if ( ++$dd == 1 )
$out.= '<li><a>'. $dotright_text2 .'</a></li>';
$out.= '<li><a href="'. str_replace( '___', $i, $link_base ) .'">'. $i .'</a></li>';
}
}
}
// в конец
if ( $end_page < $max_page ) {
if( $dotright_text && $end_page != ($max_page-1) )
$out.= '<li><a>'. $dotright_text2 .'</a></li>';
$out.= '<li><a href="'. str_replace( '___', $max_page, $link_base ) .'">'. ( $last_page_text ? $last_page_text : $max_page ) .'</a></li>';
}
// вперед
if ( $next_text && $paged != $end_page )
$out.= '<li><a class="next i-next" href="'. str_replace( '___', ($paged+1), $link_base ) .'">'. $next_text .'</a></li>';
$out .= "</ul>". $after ."\n";
if ( ! $echo )
return $out;
echo $out;
}
Вот так вывожу продукты
<code>
<?php $count_product = 0 ?>
<?php $product = new WP_Query(array('post_type' => 'product', 'posts_per_page' => 8)); ?>
<?php while ($product->have_posts()) : $product->the_post(); ?>
***
<?php endwhile; ?>
</code>