I’m occasionally asked to redirect every 404 error on a site to the home page. There are a couple of reasons why you might not want to do this (see below) but there are also valid cases where it could be the right move for your site. If you’ve decided it’s the right thing to do, here’s how to accomplish it easily in WordPress:
Edit or create 404.php in your theme directory. Replace all of the content inside with the following lines:
And that’s all there is to it!
Why shouldn’t you do that?
There are a couple of reasons that redirecting all 404 errors could be problematic.
First, search engines are said not to pass all of a page’s link equity to the redirected page unless the content is very similar. So redirecting pages that used to rank well to the home page won’t work as a sneaky way to boost your home page.
Probably more importantly, though, is the fact that it will be difficult to monitor which links are 404ing since they’ll all just end up on the home page. The usefulness of Google Webmaster Tools and other methods of monitoring 404 requests is not just in preventing future 404s. The real power is that it helps you identify what your users are looking for and where they’re failing to find it. Fixing all 404s in an automated way makes that more difficult.
I know, splash pages are wrong, evil, and will probably bring about the downfall of society. But what if you need one anyway? Say, for example, you are preparing to launch a site based on wordpress but while you’re still putting it all together you don’t want visitors poking around. How can you create a static splash page to tell people that your site is coming soon (whatever that means?)
I found myself in just that situation recently. I looked around for a plugin to let me replace my index with a simple html document for a little while. I may write one yet, but for now a beautifully simple solution is doing the trick. Here’s what to do:
Because you never called
get_footer() you can now have a totally static splash page while you’re tweaking a theme, editing content, and doing your WordPress business in secret behind the scenes. If you still want to pull in some content from WordPress (like the title and page content) you can even grab the loop from your existing page.php and use it in your splash page.
I build a fair number of WordPress sites on small budgets for my employer, Union Street Media. Sometimes I need to give our clients an editable region in the sidebar, away from the main blog/page content. Here’s a quick and dirty trick I use to pull a page into a theme outside of the loop:
// must use a variable for page id
$id = 3;
$p = get_page($id);
echo apply_filters('the_content', $p->post_content);
You can get your page ID by editing the page. It will show up in the url (the ‘post=x’ portion.) It’s important to note that you have to pass a variable to the
get_page() function. If you just pass an integer it will throw a fatal error. No need to go into why that is; just keep it in mind.
get_page() essentially wraps
get_post() so that function’s documentation is a good place to start if you want to learn what’s available to you.
This isn’t a particularly pretty solution, but it’s quick and it works well provided you know your page IDs and you’re not making a theme for distribution. I like to name my page something like ‘**Sidebar Content’ so it is easy to differentiate from regular pages.
I’m very pleased to announce that I’ve released my first WordPress plugin. It’s called Simple 301 Redirects and it does just what it says on the tin. It provides an interface for redirecting URL requests. It’s handy for when you’ve migrated a site to WordPress and are unable to maintain the URL structure. With Simple 301 Redirects you can redirect your old urls like “/about.html” to new, clean URLs like “http://www.yoursite.com/pages/about/” or whatever you like. Redirecting your old links to new destinations is important for preserving inbound links and pagerank after migrating a site. And this plugin does it in the easiest possible way I could think of.
You can read a little bit more about the plugin at its official home on this site or go straight to the WordPress plugin directory to download it. I hope you find it helpful!