Where is what we wanted. A page example.com/404
So we had a page in WordPress so the content was controllable.
But on save the slug was changed to 404-2
.
I figured maybe that slug was preserved. So after some digging I found this beautiful *ahem* if
statement in core.
<?php
if (
$post_name_check || in_array( $slug, $feeds )
|| 'embed' === $slug
|| preg_match( "@^($wp_rewrite->pagination_base)?d+$@", $slug )
|| apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent )
)
{ //....
The part it fails on is the preg_match
. No number is accepted.
So it’s not just the slug 404
but every number.
The reason for this because it preserves numbers for pagination (including in-page pagination).
So the solution was to rename the page to example.com/404-page