@stichii

Не работает пагинация WordPress?

Добрый день! Помогите понять почему не работает пагинация для произвольного типа постов, она даже не появляется на странице.
1. Создан произвольный тип записи в functions. Вот код
register_post_type('sales-training', // Register Custom Post Type
        array(
            'labels' => array(
                'name' => __('Тренинги по продажам', 'html5blank'), 
                'singular_name' => __('Тренинги по продажам', 'html5blank'),
                'add_new' => __('Добавить запись', 'html5blank'),
                'add_new_item' => __('Добавить новую запись', 'html5blank'),
                'edit' => __('Редактировать', 'html5blank'),
                'edit_item' => __('Редактировать', 'html5blank'),
                'new_item' => __('Новая запись', 'html5blank'),
                'view' => __('Просмотреть', 'html5blank'),
                'view_item' => __('Просмотреть', 'html5blank'),
                'search_items' => __('Поиск по записям', 'html5blank'),
                'not_found' => __('Не найдено', 'html5blank'),
                'not_found_in_trash' => __('Не найдено', 'html5blank')
            ),
            'public' => true,
            'hierarchical' => true, 
            //'has_archive' => true,
            'query_var'  => true,
            'supports' => array(
                'title',
                'editor',
                'excerpt',
                'thumbnail'
            ), // Go to Dashboard Custom HTML5 Blank post for supports
            'can_export' => true, // Allows export in Tools > Export
           /* 'taxonomies' => array(
                'post_tag',
                //'category'
            ) */
        ));

2. Создана функция пагинации
function html5wp_pagination( $query=null ) {
    global $wp_query;
    $query = $query ? $query : $wp_query;
    $big = 999999999;
    $paginate = paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'type' => 'array',
            'total' => $query->max_num_pages,
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'mid_size'=>1,
            'prev_text' => __('«'),
            'next_text' => __('»'),
        )
    );
    if ($query->max_num_pages > 1) :
        ?>

        <ul class="pagination pagination-sm ">
            <?php
            foreach ( $paginate as $page ) {
                echo '<li>' . $page . '</li>';
            }
            ?>
        </ul>
        <?php
    endif;
}

3.Вывод постов на странице с помощью цикла
<?php
                $type = 'sales-training';
                $paged = get_query_var('paged') ? get_query_var('paged') : 1;
                $args=array(
                    'post_type' => $type,
                    'paged' => $paged,
                    'posts_per_page' => 2,
                    'ignore_sticky_posts'=> 1,
                );
                $training = null;
                $training=new WP_Query($args);
                if($training->have_posts()):
                    while($training->have_posts()):
                        $training->the_post();?>
                        <div class="" id="post-<?php the_ID(); ?>">
                        //content
                        </div>
                    <?php endwhile; endif;?>
                <?php wp_reset_postdata();?>
            <?php html5wp_pagination(); ?>

Для вывода постов был создан свой шаблон для страницы. Т.е в консоле вордпреса в разделе Страницы - сделана страница у которой указан свой шаблон.
На тостере были подобные вопросы, но там другие проблемы были.
Заранее спасибо за помощь!
  • Вопрос задан
  • 845 просмотров
Решения вопроса 1
Добрый День !
Вы, выводите свои посты в такую переменную$training=new WP_Query($args);
Следовательно в этих местах:
$paginate = paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'type' => 'array',
            'total' => $query->max_num_pages,
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'mid_size'=>1,
            'prev_text' => __('&laquo;'),
            'next_text' => __('&raquo;'),
        )
    );
    
    if ($query->max_num_pages > 1) :

Нужно заменить $query на $training

Либо вот по такому примеру сделайте:
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$program = new WP_Query(
           array(
               'post_type' => 'program',
               'posts_per_page' => 8,
               'paged' => $paged) );

И выводите в шаблоне :
<?php if ( $program->max_num_pages > 1 ) : ?>

				<div class="paginate">
			    <?php
		        $big = 999999999; // need an unlikely integer

		        echo paginate_links( array(
				'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
				'format' => '?paged=%#%',
				'current' => max( 1, get_query_var('paged') ),
				'total' => $program->max_num_pages,
				'prev_text' => '',
				'next_text' => ''
				) );
				?>
			    </div>

			    <?php endif; ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы