Hübschere Shortlinks für WordPress

WordPress erstellt standardmäßig für alle Inhalte einer Seite sogenannte Shortlinks. Das sind kurze URLs, die sich zu den langen Artikel-URLs auflösen lassen. Leider sind diese Shortlinks mehr als unansehnlich - im Normalfall haben sie die Form "http://example.com/?p=1234". Um das ganze ein wenig hübscher zu gestalten, habe ich ein kleines Plugin geschrieben und dazu meinem NGINX eine Rewrite-Regel spendiert.

Zuerst einmal das Plugin. Es macht im Grunde nichts weiter, als den Shortlink zu nehmen, und darin den Anteil "/?p=" durch "/@" zu ersetzen. Dadurch erhält man die URL "http://example.com/@1234". Mit dieser kann ich schon bedeutend besser leben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  /*
    Plugin Name: CustomShortlink
    Plugin URI: https://weizenspr.eu/
    Description: Changes shortlinks from /?p=<id> to /@<id>
    Version: 0.1c1
    Author: Kevin Niehage
    Author URI: https://weizenspr.eu/
  */


  define("CUSTOM_SHORTLINK_NEW_PREFIX", "/@");
  define("CUSTOM_SHORTLINK_OLD_PREFIX", "/?p=");

  /* STOP EDITING HERE IF YOU DO NOT KNOW WHAT YOU ARE DOING */

  // structure taken from https://core.trac.wordpress.org/browser/tags/3.9/src/wp-includes/link-template.php
  function custom_shortlink_filter($shortlink) {
    return str_replace(home_url(CUSTOM_SHORTLINK_OLD_PREFIX),
                       home_url(CUSTOM_SHORTLINK_NEW_PREFIX),
                       $shortlink);
  }

  add_filter("get_shortlink", "custom_shortlink_filter");
?>

Anschließend musste ich meinem NGINX nur noch beibringen, was er bei der entsprechenden URL tun soll - nämlich einfach auf die ursprüngliche URL umleiten.

1
2
  # handle shortlink
  rewrite ^\/\@(.*)$ /?p=$1 last;

Mit diesen einfachen Schritten hat man individuellere Shortlinks. :)

Kurze Grüße, Kenny