Wer mit dem WYSIWYG-Editor von WordPress arbeitet, wird festgestellt haben, dass der Editor absolute Links einfügt. Selbst wenn man Links zur eigenen Webseite haben möchte, erstellt einem der WYSIWYG-Editor einen Eintrag in dieser Form:
<a href="https://www.bennyn.de/css3-animationen" title="CSS3 Animationen">CSS3 Animationen</a> |
<a href="https://www.bennyn.de/css3-animationen" title="CSS3 Animationen">CSS3 Animationen</a>
Zieht man mit seinem Blog nun auf eine andere Domain um oder möchte man seinen Blog auf dem localhost
testen, dann funktionieren die Verlinkungen nicht mehr, da der absolute Pfad nicht stimmt. Ich habe mir deshalb eine Lösung in Form eines Shortcodes überlegt, die Folgendes im Editor ermöglicht:
[link]5255[/link]
führt zu:
<a href="https://www.bennyn.de/css3-animationen" title="CSS3 Animationen">CSS3 Animationen</a>
[link text="Mein Text"]5255[/link]
führt zu:
<a href="https://www.bennyn.de/css3-animationen" title="Mein Text">Mein Text</a> |
[link]5255[/link]
führt zu:
<a href="https://www.bennyn.de/css3-animationen" title="CSS3 Animationen">CSS3 Animationen</a>
[link text="Mein Text"]5255[/link]
führt zu:
<a href="https://www.bennyn.de/css3-animationen" title="Mein Text">Mein Text</a>
Die Links werden dynamisch mit PHP erzeugt, so dass der Host immer dem gerade verwendeten Host entspricht. Ein Domain-Umzug ist somit kein Problem! Außerdem muss man keinen Text mehr für die Links eingeben, da automatisch der Text des Beitrags genommen wird. Alles was man wissen muss, ist die Post-ID (im Beispiel 5255
).
Wie kann man den Shortcode [ link ] benutzen?
Um den Shortcode zu verwenden, muss man folgende PHP-Zeilen in der Datei functions.php seines WordPress-Themes einfügen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| /*
* [link]5255[/link]
* [link text="My Link"]5255[/link]
*/
function displayLink($attributes, $postId) {
$linkTarget = get_permalink($postId);
$linkText = $attributes[text];
if (!$linkText)
$linkText = esc_attr(strip_tags(get_the_title($postId)));
$format = '<a href="%s" title="%s">%s</a>';
$link = sprintf($format, $linkTarget, $linkText, $linkText);
return $link;
}
add_shortcode('link', 'displayLink'); |
/*
* [link]5255[/link]
* [link text="My Link"]5255[/link]
*/
function displayLink($attributes, $postId) {
$linkTarget = get_permalink($postId);
$linkText = $attributes[text];
if (!$linkText)
$linkText = esc_attr(strip_tags(get_the_title($postId)));
$format = '<a href="%s" title="%s">%s</a>';
$link = sprintf($format, $linkTarget, $linkText, $linkText);
return $link;
}
add_shortcode('link', 'displayLink');
Sollte die Datei functions.php nicht vorhanden sein, kann eine leere PHP-Datei mit diesem Namen erstellt werden, um den Code einfügen zu können.