If you run a block theme and W4 Post List’s AJAX pagination never seemed to do anything, you were not imagining it. It was broken, and it had been for a while. Version 3.0.0 fixes it.
What was wrong
Adding ajax=1 to the [nav] tag is supposed to load the next page of a list in place, without a full page reload. To do that, the plugin wrote a small snippet of JavaScript into your page — and that snippet was written in jQuery.
For most of this plugin’s life that was a safe assumption. WordPress loaded jQuery on the front end of essentially every site. Block themes changed that. Twenty Twenty-Four, Twenty Twenty-Five and most modern themes do not load jQuery on the front end at all, so the snippet threw a ReferenceError the moment you clicked a page link — and then nothing happened. No error you would ever see, no clue in the page source, just a link that did not work.
What changed
AJAX pagination is now plain JavaScript with no dependencies at all. It ships as one small file, loaded only on pages where a list actually uses ajax=1, and one script serves every list on the page instead of each list carrying its own copy.
A few things got better on the way through:
- Ctrl-click, Cmd-click and middle-click on a page number now open a new tab, the way every other link on the web does. The old handler swallowed them.
- If a page request fails — flaky connection, server hiccup — the list stops spinning and falls back to a normal page load instead of leaving you stuck.
- Your pages are no longer given an inline
<script>tag per list.
Lighter on every page
While fixing that, one more thing turned up: three admin stylesheets and two admin scripts were being registered on every single front-end request. They were never actually used there — they belong to the list editor — but they were being set up on every page load regardless. They are admin-only now. Unless a list on the page genuinely needs the pagination script, W4 Post List adds nothing to your front end.
Why the jump to 3.0
Dropping a dependency the plugin has leaned on for years is the kind of change that deserves a major version number, so it got one. That is all it signals. Nothing about your saved lists changes. Your templates, styles, query settings and shortcodes are untouched, and there is nothing to migrate or rewrite. Update, and paginated lists simply start working on themes where they did not before.
For developers: register_scripts() is deprecated in favour of register_admin_scripts(), front-end assets now register in register_frontend_scripts(), and the w4pl-ajax-nav handle can be pointed at your own file with wp_deregister_script() followed by wp_register_script() if you want to replace the behaviour entirely.
Update from WordPress.org, or read the pagination guide if you are setting this up for the first time.

Leave a Reply