А почему бы этого не сделать в htaccess? Я для 404 делал просто отображения постов подходящих по названию. Например
/post
/post-o-chem-to
/kokoi-to-post
А дальше пользователь сам выбирать уже должен. В качестве слова для поиска по БД брал первое слово после последнего слеша и по алиасам искал в БД.
Okay. Давайте не будем говорить, что это пост не для хабра. Свои вопросы опытным пользователям вы могли задать, например, сюда.
1. Прежде чем перенаправлять неплохо бы проверить, если с таким адресом запись в базе данных.
2. Если нет, можно поискать не по четким совпадениям и перенаправить.
3. Использование 301 редиректа сомнительно. Как вы можете утверждать, что оно перемещено навсегда?
В вашем случае страницы 404 не существует, потому что она вечно куда-то перенаправляет.
В вордпрессе достаточно настроить правильно пермалинки (htaccess) и все само будет перенаправляться. А 404 Надо все таки для несуществующих линков использовать. Как сказал Zaandr, в вашей 404 странице тогда нет смысла.
Я использую самопис, ЧПУ обрабатывается регуляркой, например '#^/(faq/?)$#i',. И если пользователь вводит адрес вручную, неважно есть слеш или нет, будет выведена правильная страница
И снова о вечном: улучшение страницы 404 для Wordpress