Redirect WordPress 404 Not Found Page to Homepage
Wow you say .. not again ?
I know this is a tired old subject, but I felt I needed to put my 2cents in. The trigger for this was a redesign of the M3PCS website. The site has existed for a number of years, and its pages are indexed by search engines. So, if anybody clicks on one of those links, we want to do a 301 redirect to the home page.
Since the M3PCS site, like most of the sites we develop and support, is built on WordPress, the question was “how to do this – efficiently“.
A quick Google search turned up two classes of candidates (there were more, but basically these were the main two):
- Use a plugin to redirect WordPress 404 pages
- Edit the theme’s 404.php template file, and add a wp_redirect()
Problem with #1: not only are many plugins poorly coded, it pollutes the “plugin space” for, what should be, a simple functionality. Too many plugins already. So this was a no-go.
Problem with #2: this means changing theme files and/or creating a child theme. Since we were experimenting with themes, this was obviously not a flexible solution.
So, why not use a Site-Specific WordPress Plugin. A simple thing like this seems custom-made for that solution.
Simply add the following code (remember that we DO use namespacing — the namespace being “drmagu\siteplugin“):
/* 404 to 301 */ add_action( 'template_redirect', 'drmagu\siteplugin\_404_template_redirect' ); function _404_template_redirect() { if( is_404() ) { wp_redirect( home_url( ), '301' ); exit(); } }
So .. no proliferation of plugins, and no theme dependency. Enjoy.