Custom post type 404 error on “default” or “numeric” permalinks

The URL you are trying to access– mysite.com/reading-list/— is constructed by the WordPress rewrite rules. The path /reading-list/ doesn’t actually exist. If you are using the default ?p=123 links, those rewrite rules are not used. The default links are just GET strings.

In other words, since there is nothing at mysite.com/reading-list/ without the rewrite rules you get a 404.

Without the rewrite rules, you need to access the content using vanilla GET syntax. For example, the “Book” post type used in the Codex as an example

function codex_custom_init() {
    $args = array(
      'public' => true,
      'label'  => 'Books'
    );
    register_post_type( 'book', $args );
}
add_action( 'init', 'codex_custom_init' );

… is accessed without rewriting as ?book=book-cpt-post-title. You can’t switch off rewriting and also have that non-existent /reading-list/ directory, though you could create a “Page” called reading-list and use that to display your CPT.