Создание нумерации страниц для пользовательских типов записей в Wordpress

У меня есть страница событий, на которую я хотел бы добавить разбивку на страницы. Однако, поскольку это настраиваемый тип сообщения, мне это кажется довольно сложным. Мне удалось заставить работать разбиение на страницы для моей страницы новостей, но я не могу получить такой же результат для страницы событий. Вот мой код для страницы событий

<?php
get_header();
get_sidebar('left');
?>
<article class="content-main events" role="main" id="post-<?php the_ID() ?>">
<?php include 'breadcrumbs.php'; ?>
<?php query_posts(array('posts_per_page'=>'2')); ?>
<?php while (have_posts()) : the_post(); ?> 
        <div class="news-post">
            <h1><a href="<?php the_permalink() ?>"><?php the_title() ?></a></h1>
            <?php the_excerpt() ?>
        </div>

        <?php endwhile; ?>
        <?php wp_reset_query(); ?>

<!--Pagination-->
    <?php echo paginate_links( $args ) ?>
    <?php
    global $wp_query;

    $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' => $wp_query->max_num_pages
    ) );
    ?>
</article><!-- //.content-main -->
<?php

get_footer();

Если я попытаюсь изменить это

<?php query_posts(array('posts_per_page'=>'2')); ?>

к этому

<?php query_posts(array('category_name'=>'events','posts_per_page'=>'2')); ?>

Это тоже не работает. Однако, если я полностью удалю строку, она отобразит типы сообщений новостей. Я в тупике!


person Shaun Brown    schedule 18.10.2012    source источник
comment
категория событий относится к таксономии типа сообщения, верно?   -  person loQ    schedule 18.10.2012


Ответы (3)


Разбивка на страницы для пользовательских типов сообщений должна работать так же, как и для обычных сообщений.

Если вы посмотрите на тему по умолчанию TwentyEleven, вы увидите, как они это делают.

В основном они используют функции next_posts_link() и previous_posts_link().

Вы можете посмотреть это в functions.php > twentytwelve_content_nav();

Ваше здоровье,

person Ricard    schedule 18.10.2012

вам нужно добавить глобальный $paged, а затем в ваш массив, который передается в WP_Query, вам нужно добавить 'paged' => $paged

">
<?php 
global $paged;
$temp = $wp_query;
                    $wp_query = null;

                    $wp_query = new WP_Query( array('post_type' => 'yourcustomepost','posts_per_page' => 2, 'paged' => $paged ) ); ?>
<?php while (have_posts()) : the_post(); ?> 
        <div class="news-post">
            <h1><a href="<?php the_permalink() ?>"><?php the_title() ?></a></h1>
            <?php the_excerpt() ?>
        </div>

        <?php endwhile; ?>
        <?php wp_reset_query(); ?>

<!--Pagination-->
    <?php echo paginate_links( $args ) ?>
    <?php
    global $wp_query;

    $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' => $wp_query->max_num_pages
    ) );
    ?>
</article><!-- //.content-main -->
<?php
person Ajay Patel    schedule 18.10.2012
comment
Вы великолепны! У меня не было большого опыта работы с Wordpress, поэтому спасибо! У меня есть последний запрос, он показывает только первую страницу. На 2-й странице выдает ошибку 404:/ - person Shaun Brown; 18.10.2012
comment
Измените «posts_per_page» => 2 на «posts_per_page» => 10 или любое другое число. Убедитесь, что у вас есть правильная структура постоянной ссылки, это может быть проблемой для ошибки 404. - person Ajay Patel; 18.10.2012
comment
Да, я понимаю, как показать больше. У меня сейчас 4 события, по 3 на страницу. Когда я использую ссылки на страницы, это показывает ошибку. - person Shaun Brown; 18.10.2012

просто замените нижеприведенную функцию в файле functions.php примечание: в настройках бэкэнда->чтение->публикация на странице: установите это значение равным одному

function twentyeleven_content_nav( $html_id ) 
{
    global $wpdb;
    global $wp_query;

    if ( $wp_query->max_num_pages > 1 ) : ?>
        <nav id="<?php echo esc_attr( $html_id ); ?>">
            <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
            <div class="nav-previous">
                <?php next_posts_link( __( ' Previous', 'twentyeleven' ) ); ?>
                <?php
                    $count = $wpdb->get_var( "SELECT COUNT(*) FROM wp_posts where post_type='post' and post_content<>''" );

                    for($j=1;$j<=$count;$j++)
                    {
                        echo "<a href='?paged=$j'> $j < </a>";
                    }
                ?>
                <?php previous_posts_link( __( 'Next', 'twentyeleven' ) ); ?>
            </div>

        </nav><!-- #nav-above -->
    <?php endif;
}
person Akhilesh    schedule 18.04.2013