[wp-hackers] Regarding paging in WP 1.5
turnip at turnipspatch.com
Sat Mar 12 16:17:29 GMT 2005
Over the last couple of days I have become aware of the new "paging"
functionality in WordPress 1.5. Before 1.5 the number of posts specified
under Reading Options applied only for the index page; the archive and
category pages showed every single post that applied. However, in 1.5
the archive and category pages show that number of posts split into
"pages". This was obviously a conscious design decision, and whether or
not I agree with it (which I don't) is pretty irrelevant -- I'm more
worried about the lack of documentation about this change (the only way
I knew about it was looking at the default theme) and the difficulty I
encountered in turning it off.
First and foremost, this really *should* have been announced. By virtue
of the fact that this feature wasn't available in 1.2, everyone who has
ported their 1.2 design to a 1.5 theme (unless they studied the default
theme code) will have "broken" archives that cannot fully be accessed.
This is a change that affects fundamental behaviour, and people need to
know about it. To prove my point, there has been a fair amount of
confusion surrounding this behaviour:
* http://wordpress.org/support/topic.php?id=12120 (read the first
sentence out loud)
In this announcement, there should have been instructions about how
users could, if they wanted to, turn this feature off and stick with the
1.2 behaviour -- after all, not everyone has the time to mess around
with their templates with every new release. But perhaps such an
announcement was never made because it is *very* difficult to turn it off.
The ways I know of are:
1) query_posts('nopaging=true'); before the loop or "nopaging=true" in
the querystring (if your theme doesn't have an archive.php then you'd
need to use "if (is_archive()) query_posts('nopaging=true');" to make
sure it doesn't show them all for the index page). This method does,
indeed, turn it off, but in my testing it has shown *EVERY SINGLE*
published post in the database, not just the ones for that
month/year/category/whatever (which of course raises the question as to
whether that much power should be put in a querystring).
2) query_posts('posts_per_page=-1'); before the loop or
"posts_per_page=-1" in the querystring. This option implies
nopaging=true anyway, so is practically the same as above.
3) "$posts_per_archive_page = -1;" before the call to
wp-blog-header.php. This has been the only satisfactory solution I have
found (and I've spent a good few hours staring gormlessly at the code).
However, this is really not good enough because WP is trying to appeal
to non-technical users -- this should be an admin option, NOT a code
tweak. Also, it has to be before the blog header include, so cannot be
used specifically in themes but only right across the blog.
If anyone has any more insight into this I'd love to hear it, but more
importantly, I think this is a MUST for version 1.5.1, and an
announcement should be made about it so that people are aware of the
Jonathan Leighton aka. Turnip
http://turnipspatch.com/ | http://digital-proof.org/
More information about the wp-hackers