Relative WordPress Links

Interne Links der eigenen Seite können sich häufig ändern, zum Beispiel wenn man die Domain wechselt oder die Permalink-Struktur von WordPress ändert. Besonders ärgerlich ist das, wenn man in den eigenen Artikeln auf andere Beiträge verlinkt und dann die alten Links nicht mehr gültig sind und man gezwungen ist, alle Verlinkungen manuell anzupassen.

Zum Glück gibt es dagegen ein Heilmittel. Den Code dazu findet man im Beitrag „Interne Links in WordPress-Beiträgen zukunftssicher setzen“ von Sergej Müller.

WordPress ID für Artikel und Seiten

Die ID für einen WordPress-Artikel oder eine WordPress-Seite kann man über das Template Tag the_ID(); herausbekommen. Leider ist dieses Template-Tag nur innerhalb des „Loop“ verwendbar.

Um auch außerhalb vom Loop an die ID zu gelangen, muss in der functions.php (im Template-Ordner) folgender Code stehen:

<?php
if ( function_exists('register_sidebar') )
    register_sidebar(1);
?>

Danach kann man in jeder beliebigen Template-Datei die Nummer mit folgendem Befehl ausgeben:

<?php echo $post->ID ?>

Vielen Dank an Vladimir Simovic für seinen Beitrag: „WordPress: extra CSS-Regeln pro Seite oder Artikel„.

Multi-Level Navigation mit WordPress

Oft möchte man eine horizontale Navigationsleiste auf seiner Webseite haben, welche dann die Unterkategorien in einer vertikalen Navigationsleiste anzeigt. Um dieses Layout in WordPress zu erreichen, muss man ein wenig tricksen.

Multi-Level Navigation mit WordPress weiterlesen

Ähnliche Artikel in WordPress anzeigen (Plugin)

Um ähnliche Artikel zu einem Beitrag in WordPress anzeigen zu können, braucht man ein Plugin. Inzwischen gibt es schon eine Vielzahl an Plugins, die diese Funktion realisieren. Zum Beispiel Yet Another Related Posts Plugin (kurz YARPP) von Michael Yoshitaka Erlewine und Similar Posts von Rob Marsh.

Ich habe beide Plugins getestet und kann Similar Posts zum eindeutigen Sieger erklären! YARPP hat mir zu viel Eigenwerbung und ist viel zu überladen. Direkt nach der Installation richtet YARPP ein eigenes Menü in den WP-Einstellungen ein. Das ist einfach zu viel Ballast für ein Plugin, das eigentlich bloß ähnliche Beiträge anzeigen soll. Außerdem ist das Template-Styling von YARPP recht umständlich. Man muss dazu einen ganzen Template-Ordner in das eigene Template-Verzeichnis kopieren und 5 Dateien anpassen.

Da lobe ich mir doch Similar Posts! Zur Verwendung braucht man nur die Post-Plugin Library und das Similar Posts-Plugin installieren. Im Anschluss muss man nur noch similar_posts(); als PHP-Ausdruck an die gewünschte Stelle im eigenen Template schreiben und schon werden einem alle ähnlichen Beiträge zu einem Artikel angezeigt. Zudem lassen sich noch viele Einstellungen tätigen, wie beispielsweise der Ausschluss von bestimmten Kategorien.

WordPress Suche ist nicht valide

Das WordPress Suchen-Plugin generiert keine konforme Auszeichnung nach den Standards des World Wide Web Consortium (kurz: W3C). Der W3C Markup Validation Service stört sich am Attribut „role“ der WordPress Suche:

Attribute „role“ is not a valid attribute. Did you mean „frameborder“ or „scrolling“?

Beheben kann man diesen Schönheitsfehler, indem man das role Attribut aus der Suche entfernt und den Quellcode dann in ein eigenes Template für die Suche kopiert und als searchform.php in seinem Template-Ordner abspeichert. Der Code dafür könnte folgendermaßen aussehen:

1
2
3
4
5
6
7
<form method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>" >
	<div>
		<label class="screen-reader-text" for="s">Suche nach:</label>
		<input type="text" value="" name="s" id="s" ///>
		<input type="submit" id="searchsubmit" value="Suchen" ///>
	</div>
</form>

Wenn man alles richtig gemacht hat, dann freut sich der W3C-Validator mit einem:

This document was successfully checked

Eingebunden wird die Suche im Template mit:

1
2
3
4
5
<?php if (function_exists('register_sidebar') &&
	  dynamic_sidebar('search') ) : else : ?>
<!-- Vorher unter "WP Backend" - "Design" - "Widgets"
das "Suchen"-Widget zur Sidebar "Search" hinzufuegen  -->
<?php endif; ?>

Oder ganz einfach mit:

<?php get_search_form(); ?>