I’m trying to get pagination to work properly with a custom query and custom post type on front page but no luck so far. Here is my code:
@php
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
$q = new WP_Query( array(
'post_type' => 'cake',
'posts_per_page' => 10,
'paged' => $paged
) );
$temp_q = $wp_query;
$wp_query = NULL;
$wp_query = $q;
@endphp
@if ($q->have_posts())
@while ($q->have_posts()) @php($q->the_post())
@include ('partials.content-'.(get_post_type() !== 'post' ? get_post_type() : get_post_format()))
@endwhile
@php(wp_reset_postdata())
@if ($q->max_num_pages > 1)
<nav class="posts-navigation">
<div class="nav-previous">
{!! get_previous_posts_link( __('← Previous', 'sage') ) !!}
</div>
<div class="nav-next">
{!! get_next_posts_link( __('Next →', 'sage'), $q->max_num_pages ) !!}
</div>
</nav>
@php
$wp_query = NULL;
$wp_query = $temp_query;
@endphp
@endif
@else
<div class="alert alert-warning">
{{ __('Sorry, no posts were found.', 'sage') }}
</div>
@endif
@php
$wp_query = NULL;
$wp_query = $temp_q;
@endphp
Problems:
-
get_previous_posts_link()
not showing on pages 2, 3, 4, etc. -
get_next_posts_link()
is showing on page 2, 3, 4, etc, but always return /page/2/
Edit:
Nervermind. I had to simply define global $paged; at the beginning
@php
global $paged
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
...