Sites running WordPress 6.3 and plugins that add the post__not_in
query variable on the parse_query
hook are breaking the lists of posts and pages in the Dashboard. I found this bug because I built and maintain a plugin that did exactly this.
Example pages with errors after updating to WordPress 6.3
- wp-admin/edit.php
- wp-admin/edit.php?post_type=page
- wp-admin/edit.php?post_type={custom_post_type}
Why?
The post__not_in
query variable makes it easy for developers to hide posts and pages from dashboard users. The parse_query
hook is one of the last hooks before the main query runs, and a handful of hide-page-tutorials recommend using it to exclude specific posts or pages from the query.
How to Fix
Follow this advice: Avoid post__not_in
How to find out if a plugin is causing the errors
Disable all plugins one at a time and check the broken pages. This is the way to troubleshoot almost every problem on a WordPress site. If you cannot deactivate all plugins for this plugin conflict test, create a duplicate copy of the site to use during the test.