• Resolved borkk85

    (@borkk85)


    Hey,

    I’ve done multiple attempts for this archive pagination to work, however I’ve been unsuccessful and can’t understand what’s the issue, it always loads to page not found… Any idea/suggestion would be appreciated, since I’ve been at this for the past 10h+…

    The query with pagination:

    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $args = array(
    'post_type' => 'news',
    'posts_per_page' => 3,
    'paged' => $paged
    );
    $news_query = new WP_Query($args);
    if ($news_query->have_posts() ) : ?>

    while ($news_query->have_posts() ) : $news_query->the_post();
    get_template_part( 'template-parts/content-news-archive', get_post_format() );
    endwhile; ?>
    <?php
    if ($news_query->max_num_pages > 1) :
    ?>
    <div class="pagination">
    <?php
    $big = 999999999;
    echo paginate_links(array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?=%#%',
    'current' => max(1, get_query_var('paged')),
    'total' => $news_query->max_num_pages,
    'prev_text' => '&larr;',
    'next_text' => '&rarr;',
    'mid_size' => 3,
    ));
    ?>
    </div>
    <?php
    endif;
    ?>
    <?php else :?>

    <p>No news items found</p>

    the registered CPT in functions.php

    add_action( 'init', 'create_post_type_news' );
    function create_post_type_news() {
    register_post_type( 'news',
    array(
    'labels' => array(
    'name' => __( 'News' ),
    'singular_name' => __( 'News Item' )
    ),
    'public' => true,
    'has_archive' => true,
    'menu_icon' => 'dashicons-welcome-write-blog',
    'supports' => array('title', 'editor', 'thumbnail'),
    'taxonomies' => array('category'),
    'rewrite' => array('slug' => 'news', 'with_front' => true),
    )
    );
    }
Viewing 2 replies - 1 through 2 (of 2 total)
  • Moderator bcworkz

    (@bcworkz)

    You’re not the only one experiencing this trouble. See https://www.ads-software.com/support/topic/pagination-page-2-not-showing-posts/ for an ongoing discussion in which I’ve contributed. The OP there is close to getting this resolved. If you have additional questions, go ahead and ask in this topic. Please do not distract attention in the topic I linked to.

    Thread Starter borkk85

    (@borkk85)

    Hey @bcworkz , so I was able to resolve the issue with a helpful post I found on wordpress.stackexchange by adding this code to filter the main query for that specific CPT into functions.php, and then removed the custom query, and just used the paginate_links(); function, which solved my pagination issue.

    add_action( 'pre_get_posts', 'only_3_news_per_page' );
    function only_3_news_per_page( \WP_Query $q ) : void {

    if ( is_admin() || ! $q->is_main_query() || ! is_post_type_archive( 'news' ) ) {
    return;
    }

    $q->set( 'posts_per_page', 3 );
    }

Viewing 2 replies - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.