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
/*
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');

?>

`

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:// ).

About Jake Spurlock

Well, this site started as a my business site, but has evolved into a testbed for Wordpress ideas that I want to see go live. For the most recent posts, check out my other site.
This entry was posted in Plugin, Wordpress and tagged , , , . Bookmark the permalink.

8 Responses to How to: Point your post permalink to an external site

  1. Paul says:

    Very cool plugin and one I have looked for in the past (which is why this page now resides in my delicious bookmarks =) ). I am assuming this plugin also works for pages and not just posts, right? If so, this is a function that should be considered for the wordpress core! Thanks for your work on this!

  2. barry says:

    yes cool but in my case is only half the answer.
    I have blog with posts from RSS feed–they change every hour or so, but am not getting urls for some reason–your plug in would help with individual posts but am not sure if it would work with rssposts

  3. Pingback: Top 60 incredibly useful WordPress plugins to power up your blog | Garmahis

  4. Pingback: wp_testes – Mastic » enable extrnal permalinks

  5. Pingback: Designers' HQ » Top 60 incredibly useful WordPress plugins to power up your blog

  6. Pingback: The Ultimate Hacker

  7. Nela says:

    Hi Jake,
    This is exactly what I was looking for . Im working on a friends site and trying to add this. I have enabled the plugin but cannot work out how to customize a permalink on the post to use an external one.
    can you give an example of a link that was default, and what you entered to make your plugin work?

    We are using simplefolio , and perhaps this is causing complications.

    any help would be fantastic
    thanks!
    Nela

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>