If you run an online magazine, most of your readers will never go through your archive, even if you design a neat archive page. It’s not you; it’s just that going through archives is not very popular these days. So, how do you actually make readers dig in without forcing them? How do you invite them to (re)read in a way that’s not boring? How do you make your WordPress magazine more interactive?
Call it recycling if you like, but random redirection doesn’t have to be about retreading familiar territory. Through random redirection, you offer readers a chance to hop randomly through your posts and discover content that they somehow missed.
The concept really is simple. All you have to do is create a hyperlink — named, say, “Random article” — that when clicked will redirect the reader to a randomly pulled article.
WordPress supports random redirection out of the box, but it’s not very obvious. All of the required functions are in the core, but they’re not bound in any common workflow. For instance, generating a “Random article” link in the main menu simply by checking a box in the administration section is not possible.
To implement random redirection in WordPress, you will usually need to work with the following three things:
- A page to process the redirection,
- A query to pick a post from the database,
- Some sort of mechanism to initiate the redirection.
The Simple Solution
We’ll be implementing random redirection through a WordPress page, which we’ll simply call “Random.” Creating this new page in the admin section will be the last step we take, though. Why? Because we don’t want to make the redirection page accessible before it’s been fully implemented.
According to the WordPress template hierarchy, if you create a page template file named
page-random.php, whenever a user loads the page assigned to the slug
random, it will load through the
page-random.php template. This is a well-known benefit of WordPress and is also useful for our random redirection.
page-random.php page template will not include the usual calls for loading the header, sidebar and footer templates, because our “Random” page won’t generate any visible output for the user; it will simply jump (that is, redirect) to a randomly chosen article. Because we need to make only one request from the database (to select one random article to redirect to), we will make only one call to the
get_posts() function in the template, and we’ll use a
foreach loop to process the output.
Visit Smashing Magazine for further information