How to: Point your post permalink to an external site

This was originally posted on ClearSkys.net, but it seems that Barry is going to be shutting down the site. So, that it lives on, I am posting it here. Of note, this is the plugin that I had in mind when I designed that Daring Inspiration WordPress theme.

Any visitors, or subscribers, to John Grubers’ Daring Fireball blog will notice how he uses the post titles as direct links to the sites and information that he refers to within the posts body.

Earlier today WP Recipes posted a quick tutorial on how to set this up on your site (based on work by Vlad Grubman) by adding some code to your themes functions.php file and then changing all the permalink calls within the theme to use the new permalink code instead of the standard WordPress loop function the_permalink().

Whilst this is a perfectly workable solution, it is dependent on modifying your themes functions.php file and all of the pages that include the WordPress loop every time you switch themes (which if you are anything like me, is quite often).

I have modified the code into a small plugin, that when activated, will replace the standard permalink with an external URL without any need to modify your sites theme. I’ve also added an extra filter so that it will replace the permalinks within your RSS feed as well.

The code for the plugin can be found below, and can be downloaded from here: Eternal Permalink. To install, just change the .txt to .php and upload to wp-content/plugins.

`

[php]
<?php
/*
Plugin Name: Enable External Permalinks
Plugin URI: http://jakespurlock.com/2009/09/how-to-point-your-post-permalink-to-an-external-site/
Description: This plugin will allow you to change the post permalink for your posts/pages to an external sites URL
Author: Barry at clearskys.net
Version: 0.1
Author URI: http://blog.clearskys.net/
*/

function cs_external_permalink($permalink) {
global $post;

$thePostID = $post->ID;
$post_id = get_post($thePostID);
$title = $post_id->post_title;

$post_keys = array(); $post_val = array();
$post_keys = get_post_custom_keys($thePostID);

if (!empty($post_keys)) {
foreach ($post_keys as $pkey) {
if ($pkey==’url1′ || $pkey==’title_url’ || $pkey==’url_title’ || $pkey==’external’) {
$post_val = get_post_custom_values($pkey);
}
}
if (empty($post_val)) {
$link = $permalink;
} else {
$link = $post_val[0];
}
} else {
$link = $permalink;
}

return $link;

}

add_filter(‘the_permalink’,’cs_external_permalink’);
add_filter(‘the_permalink_rss’,’cs_external_permalink’);

?>
[/php]

`

To switch a post from using the standard permalink to an external one, you simply add a custom field to the post with a key of url1, title_url, url_title or external. The value of the custom field should be the complete URL you want to link to (including http:// ).

A Daring Inspiration

I am excited today, to FINALLY release a WordPress theme that I have been working on. In all of it’s glory, A Daring Inspiration.

Daring Inspiration

Daring Inspiration is a theme that I have had kicking around in my head for a long time. For those unfamiliar, there is a great site on the internet run by mac pundit, John Gruber called Daring Fireball. John write simple text posts, and shares them in a link style that lends itself to being more of a link style blog then a traditional one.

With that being said, this theme is GPL licensed, XHTML valid, and rocking in its simplicity.

Demo
Download Now