WordPress 6.3 Errors in Dashboard

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.