WordPress: Dynamische “Last Posts” Signatur erstellen

WordpressIch hatte mir so etwas vor einigen Jahren schon einmal für meine alte Webseite erstellt, damals allerdings noch ohne WordPress, und nun kam ich auf die Idee das auch mal für Badango.eu zu machen, ist ihmo einfach immer schöner, wenn man in einer Signatur in einem Forum oder so direkt sieht, worum es denn in dem Blog geht, statt einfach nur den Link da rein zu klatschen.

Das Ganze ist auch gar nicht so schwierig und sollte für jeden mit grundlegenden PHP-Kenntnissen relativ problemlos umzusetzen sein, viel ist dafür nämlich nicht nötig.

Dynamische Signaturgrafik mit den neusten WordPress Posts erstellen

Zunächst erstellen wir eine neue Datei im Hauptordner der WordPress Installation, ich habe sie z.B. dynamic-sig.php genannt, mit dem folgenden PHP-Code:

    include('wp-load.php');

    $posts = get_posts('numberposts=3');

    foreach ($posts as $post) {
        $topic[] = utf8_decode($post->post_title);
    }

    $img = imagecreate(468, 60);
    $green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
    $black = imagecolorallocate($img, 0x00, 0x00, 0x00);

    imagestring($img, 3, 15, 5, 'Neu auf Badango.eu:', $black);
    imagestring($img, 2, 15, 20, $topic[0], $black);
    imagestring($img, 2, 15, 32, $topic[1], $black);
    imagestring($img, 2, 15, 44, $topic[2], $black);
    imagecolortransparent($img, $green);

    header("Content-type: image/png");
    imagepng($img);

Hier wird zunächst die Datei wp-load.php included, damit wir auf die Core-Funktionen von WordPress zugreifen können (und somit die Posts nicht manuell aus der DB abfragen müssen), anschließend können wir ganz einfach mit Hilfe der Funktion get_posts() die letzten Beiträge in unserem Blog abfragen, ich habe hier mal nur die letzten 3 genommen, da die ganz gut auf das übliche Banner-Format von 468×60 passen, wenn ihr ein größeres Bild erstellen wollt, dann könnt ihr da natürlich ohne weiteres auch mehr Posts abfragen, dafür einfach nur die 3 durch eine andere Zahl ersetzen.

Als nächstes wird via imagecreate() ein neues Bild mit einer Größe von 468 x 60 Pixeln erstellt, die Farben festgelegt (wobei hier nur $black wichtig ist, da der Hintergrund ja transparent sein soll) und zuletzt wird das Bild mit den Texten versehen, hier einmal die Überschrift “Neu auf Badango.eu:” und darunter die Titel der letzten Beiträge. Die Zahlen in imagestring() stehen dabei für die Schriftgröße (1-5 sind dabei vorgegebene Größen), den Abstand vom linken Rand (hier 15px) sowie den Abstand zum oberen Rand. Zuletzt wird der Hintergrund noch transparent gemacht, der Header für den passenden Content-Type gesetzt (Achtung: Davor darf nichts anderes ausgegeben werden!) und schließlich das Bild ausgegeben.

Falls ihr lieber einen farbigen Hintergrund haben möchtet, dann lasst einfach diese Zeile weg:

imagecolortransparent($img, $green);

Die erste oben eingestellte Farbe (in diesem Beispiel $green, also Grün) würde dann als Hintergrundfarbe genutzt.

Wenn wir die Datei nun aufrufen, dann sollte zwar schon das gewünschte Bild angezeigt werden, doch hat die Datei ja immer noch die Endung .php – und kann damit in den meisten Forensystemen nicht als Grafik eingefügt werden, daher müssen wir nun auch noch eine Kleinigkeit in der .htaccess Datei einfügen um dieses Problem zu umgehen, dafür benutzen wir einfach die standardmäßige .htaccess von WordPress und fügen dort folgende Zeilen hinzu:

# Dynamische Singnatur von .png auf .php umschreiben
RewriteRule ^dynamic-sig\.png$ /dynamic-sig.php [NC,L]

Und zwar so, dass es am Ende folgendermaßen aussieht:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
# Dynamische Singnatur von .png auf .php umschreiben
RewriteRule ^dynamic-sig\.png$ /dynamic-sig.php [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


# END WordPress

Nun können wir unsere Signatur wie eine gewöhnliche PNG-Datei aufrufen / einbinden, das Ergebnis sieht in diesem Fall zum Beispiel so aus:

Dynamische Signatur mit den letzten Blogposts

Tags: , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.