0 0 votes
Article Rating

The line

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

will fail, because on singular post view, when the URL contains '/page/XX/', the variable WordPress sets is 'page' and not 'paged'.

You may think to use 'page' instead of 'paged', but that will not work either, because once the 'page' variable is intended to be used for multi-page singular post (page separation using <!--nextpage-->) and once the post is not multi-page, WordPress will redirect the request to the URL without '/page/XX/'.

This is what happens when you name your query variable $wp_query.

The solution is to prevent that redirection by removing the function responsible for it, which is 'redirect_canonical' hooked into 'template_redirect':

So, in your functions.php add:

add_action( 'template_redirect', function() {
    if ( is_singular( 'authors' ) ) {
        global $wp_query;
        $page = ( int ) $wp_query->get( 'page' );
        if ( $page > 1 ) {
            // convert 'page' to 'paged'
            $wp_query->set( 'page', 1 );
            $wp_query->set( 'paged', $page );
        }
        // prevent redirect
        remove_action( 'template_redirect', 'redirect_canonical' );
    }
}, 0 ); // on priority 0 to remove 'redirect_canonical' added with priority 10

Now WordPress will not redirect anymore and will set correctly the 'paged' query var.


Chris

Chris

Just me, need more info?

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x