Artikel in WordPress hervorheben. (HowTo)

Wordpress - HowToWelcher Blogger kennt das nicht ? Man hat nun schon seit geraumer Zeit sich im Internet mit den verschiedensten Thematiken befasst und, jedenfalls seiner eigenen Meinung nach, auch ein paar wirklich gute Artikel verfasst. Diese „Contentperlen“ gehen jedoch mit der Zeit und der Flut an neuen Artikeln innerhalb eures Blogs leider unter und können nur schwer von euren Besuchern aufgefunden werden.
Zwar gibt es zahlreiche Widgets, welche die am meist gelesenen und somit populärsten Artikel hervorheben, aber diese müssen ja nicht zwangsläufig die eurer Meinung nach besten Texte sein.

Um diese Problematik zu beseitigen, ohne gleich ein Plugin installieren zu müssen, gibt es eine einfache Möglichkeit, wie man einzelne Artikel selbst hervorheben kann.
Wordpress kann natürlich nicht wissen, welche Artikel wir als besonders wertvoll erachten und aus diesem Grund müssen wir unserem Blog eine Möglichkeit geben entsprechende Artikel gesondert zu indexieren. Hierzu empfiehlt sich die Verwendung sog. „Benutzerdefinierter Felder„, welche ihr im Adminbereich eurer WordPressinstallation unter der Rubrik „Schreiben“ findet.

Wordpress - Benutzerdefinierte Felder

Ähnlich der Windowsregistry sind diese Felder (engl. Fields), ein Schlüssel-Wertpaar, mit welchem man einzelne Funktionen in der Postmeta-Tabelle seiner WordPressdatenbank abspeichern kann. Neben den werksseitigen Standardschlüsseln eurer WordPressinstallation (_wp_attached_file, _wp_page_template usw.) habt ihr die Möglichkeit eigene Schlüsselfelder zu definieren. Und dieser Option bemächtigen wir uns nun, um das geschilderte Problem der hervorzuhebenden Artikel zu lösen.
Für unsere Topartikelfunktion benötigen wir nur ein Schlüssel-Paar,welches wir hier beispielhaft als topartikel definieren. Diesem ordnen wir eine Zahl zu , welche wir als eine Art Priorität oder Sortierung benutzen.

Nun zum eigentlichen Beispiel. Sucht euch nun innerhalb eures Blogs einen „wertvollen“ Artikel heraus, welchen ihr gerne hervorheben möchtet und ladet diesen per Klicks auf „Verwalten“ und „Beiträge“ in den Adminbereich eurer WordPressinstallation. Erscheint nun eurer Artikel in eurem gewohnten Editor, scrollt ihr nun die Seite bis zur Option „Benutzerdefinierte Felder“ herunter und legt dort ein neues Feld namens „topartikel“ mit dem Wert „1“ an. Also noch einmal langsam und für alle zum „Mitdenken“: „In das Feld Schlüssel tragt ihr topartikel ein (Groß-/Kleinschreibung beachten) und daneben in das Feld Wert 1. Danach auf Benutzerdefiniertes Feld hinzufügen klicken und die Werte werden gespeichert. Ihr braucht nicht extra noch einmal den Beitrag speichern.

Benutzerdefiniertes Feld

Nun müssen wir nur noch dem Feld „Topartikel“ innerhalb der WordPressinstallation per php-code Funktionen zuweisen.
Damit man nicht an jede Stelle innerhalb der Theme-Dateien immer wieder die gleiche Funktion schreiben muss gibt es in WordPress eine Datei namens functions.php. Sollte sie in eurem Theme fehlen, öffnet mit einem Texteditor ein leeres Dokument und speichert es in eurem Theme als functions.php ab und fügt folgenden Code ein:

<?php
function getTopArticles($count){
global $wpdb;
$count = intval($count);
$toparticles = $wpdb->get_results("SELECT
post_id FROM  $wpdb->postmeta
WHERE meta_key ='topartikel'
ORDER BY meta_value ASC
LIMIT 0, $count");
if ($toparticles){
foreach ($toparticles as $toparticle){
$title = wptexturize(get_the_title
($toparticle->post_id));
$link = get_permalink($toparticle->
post_id);
echo '<li><a href="'.$link.'" 
title="'.$title.'">'.$title.'</a></li>';
}
}else{
echo '<li>keine Topartikel gefunden.</li>';
}
}
?>

Die php-Funktion getTopArticles sucht die Artikel aus eurer Datenbank, welche den Schlüssel topartikel haben und sortiert die Beiträge nach deren Werte. Die Anzahl der gelisteten “Topartikel” können wir frei definieren. Wenn Beiträge mit dem Schlüssel topartikel gefunden werden, wird eine Liste ausgegeben, sind keine Datensätze vorhanden, erscheint die Fehlermeldung “keine Topartikel gefunden”.

Jetzt brauchen wir nur noch unsere Funktion an der Stelle innerhalb des verwendeten WordPressthemes einzutragen, an der sie im Blog erscheinen soll. Dies kann die Sidebar sein, oder oberhalb eines Posts. Ich füge die Funktion hier beispielhaft in die sidebar.php ein, um die Topartikel ganz oben in der Seitenleiste zu erscheinen zu lassen.
Also die sidebar.php im WordPresseditor öffnen und an die entsprechende Stelle die Funktion einfügen:

<?php if (function_exists
('getTopArticles')): ?>
<h3>Topartikel</h3>
<ul>
<?php getTopArticles(5); ?>
</ul>
<?php endif; ?>

Mit dem obigen Code fragen wir zuert einmal ab, ob unsere Funktion getTopArticles überhaupt vorhanden ist. Sollte das nicht der Fall sein, wird der HTML Code, der zwischen if und endif steht, nicht ausgeführt. Innerhalb der Klammern von getTopArticles(5) wird die Anzahl der Topartikel angegeben, die in der Seitenleiste erscheinen sollen.

Diese manuell implementierte Liste könnt ihr nun natürlich mit Hilfe zahlreicher CSS-Befehle eurem Theme entsprechend anpassen.

5 Kommentare

  1. Constantin Mai 19, 2008 12:08 pm 

    Schöner Artikel! Das werde ich nachher gleich mal ausprobieren.

    Denn insbesondere wenn man viel Zeit in Artikel investiert, ist es oft schade, dass sie im Blogryhtmus untergehen.

    Constantin

  2. Bloggonaut Mai 19, 2008 4:33 pm 

    Danke für dein nettes Feedback. Kannst dich ja mal melden, ob es bei dir funktioniert hat.
    Würde mich freuen.

    Grüße

    Bloggonaut

  3. Torsten September 30, 2009 12:30 pm 

    Hallo,
    auch wenn der Artikel schon eine Weile her ist, aber die PHP Funktion über die benutzerdefinierten Felder ist genau das was ich gesucht habe. Funktioniert auch einwandfrei, aber woran ich mir, mangels PHP-Wissen, die Zähne ausgebissen habe ist den Wert des Feldes noch zusätzlich hinter dem $title auszulesen z.B. Artikelname (12 Stk.). Vielleicht weißt Du wie das geht? Danke.

  4. Wordpress-Fan Juni 30, 2010 4:19 pm 

    Klasse, danke. Das sollte ich mal ausprobieren um bestimmte Objekte besonders hervorzuheben und evtl. ganz oben anziegen zu lassen. Außerdem kann man ja auch in der Sidebar etwas anzeigen lassen.

Schreibe einen Kommentar