next/prev_posts_link bug?
-
Previously I reported having problems with next_posts_link as it generates https://mysite.com/blog/blog/Index.php. Having no answers from support for 2 days, I had to dig deeep and found what seems to be a possible problem.
The first thing is that the actual problematic link is “https://mysite.com/blog/Blog/Index.php?paged=2”. Notice there is 2 “blog” and this is wrong. Since my category page is working, I used it and it generates a link like this “https://mysite.com/blog/index.php?m=200712&paged=2” and this is correct.
To understand why the same function generated an error in one page while having no problems in another, I traced next_posts_link back to function
get_pagenum_link
. On the second line, the code is:$request = remove_query_arg( 'paged' );
I echoed this out and found that on my working page, the
$request = '\blog\index.php?m=200712&paged=2'
On the problematic page,
$request = '\Blog\Index.php?paged=2'
Notice the big difference is that there is a capital letter ‘B’ in “Blog” on the problematic page, and in subsequent lines of code:
$request = preg_replace('|^'. $home_root . '|', '', $request);
“\blog\” gets replaced to nothing, meaning deleted. Since on my problematic page, the input is “\Blog\” it does not get replaced and thus repeat itself on my eventual output.
I have thus replaced:
$request = remove_query_arg( 'paged' );
with
$request = strtolower(remove_query_arg( 'paged' ));
and it has worked.I am not a PHP programmer and is just a newbie, and have no idea how “blog” from one page turns to “Blog” in another. I wonder if this “fix” will work or is correct.
- The topic ‘next/prev_posts_link bug?’ is closed to new replies.