hello!
I had forgot about this topic..
so, basically I’ve realized that this is a bug which has no solution (or at least it didn’t when I was looking at it), so I’ve figured out a way to going around it.
basically I’ve created a clone of the homepage (called NEWS), which looks the very same and displays a loop of all posts at the same as the home did (in that case I had a page template for “blog” and I applied it, but it’s not too tricky to create one if you don’t have it).
anyway, as I said before, the pagination works perfectly in pages other than home, so I’ve just builded up manually the pagination buttons for the home, making it so that the links points to this clone page rather than the home itself, passing the value of the page number that it should be displayed when landing. so basically after the first click on a navigation link from the home, you actually land and then browse pages from this clone page. ??
note: this hack needs to have the plugin wp pagenavi installed, you can get it here: https://www.ads-software.com/plugins/wp-pagenavi/
so, after you’ll create the clone page, you should copy this code on your page.php template. I’ve commented it extensively, so you should be fine
<?php
/**** HACK TO GO AROUND THE S2MEMBERS BUG WHICH BREAKS PAGINATION LINKS IN HOMEPAGE ******/
/* code by A Piccart
/* author ref: https://affordable-web-developer.com
/*
/* create a clone page of your home (in this case called NEWS, if you name it differently, change it through the code)
/* add this code below your posts loop in home template file, or in page.php if you have only that template file for pages.
/*
/* note: this hack requires the plugin page-navi to be activated
/* you can get it from here: https://www.ads-software.com/plugins/wp-pagenavi/
*/
?>
<?php // if the page is not the home, call the normal pagination from the plugin ( you can strip this bit if you are pasting this in a home-template file)
if (is_home()){ // if this conditional is still displaying the real navigation in home, try using if (is_front_page()) {
wp_pagenavi();
}
else { // if it's the home, print our custom made navigation (if you are pasting this in a home-template file, start from here)
?>
<?
// get the number of post in the main query
$total_posts = $wp_query->found_posts;
// get the number of posts per page set in the options
$posts_per_page = get_option('posts_per_page');
// calculate the number of total pages
$tot_pages = round($total_posts / $posts_per_page) ; // round the result to be an integer
// set a var for a counter (since we are in the first page, the counter starts from there)
$page_count = 1;
?>
<!-- print the beginning of the page-navigator -->
<div class='wp-pagenavi'>
<span class='pages'>Page 1 of <?php echo $tot_pages; ?></span>
<span class='current'>1</span> <!-- as this code will be in home, the current page will of course be the 1st -->
<?php // foreach page till the counter is less than 10 (the number of pages we want in the navigation) , print the number with the link.
while ($page_count <= 10 ){
// carry on only if the total pages are actually at least the same amount of the current number
if ($page_count <= $tot_pages){
// increment the counter for the next page
$page_count++ ;
?>
<!-- this will print a number box which links to our news page passing the currently looped number to the page navigation of it -->
<a class="page larger" href="<?php echo home_url(); ?>/news/page/<?php echo $page_count; ?>/"><?php echo $page_count; ?></a>
<?php
}
} // we can close the nuber boxes loop
// if there are still pages, print the suspension dots
if ($tot_pages >= $page_count ){ // consider that after printing the 10th box, the page counter is actually 11
?>
<span class='extend'>...</span>
<?
} ?>
<!-- print the NEXT button which in the homepage will be page 2 -->
<a class="nextpostslink" href="<?php echo home_url(); ?>/news/page/2/">?</a>
<?php // again, print the last button only if the pages were actually more than 10
if ($tot_pages >= $page_count ){
?>
<!-- print the link to the last page -->
<a class="last" href="https://paulthetall.com/news/page/<?php echo $tot_pages; ?>/">Last ?</a>
<?
} ?>
<!-- close the pagination div -->
</div>
<?php // close our pagination conditional (strip this if you are pasting this in a home-template file)
} ?>
I actually rewrited this now, as that site is not mine and I have not access to it at the moment. so I haven’t tested it but it should work. let me know how it goes! ??
cheers!