WordPress Plug-Ins

Aktuell betreibe ich drei verschiedene WordPress Blogs. Dieses hier, mein privates Blog, mein Blog rund um Großmodelle und den Blog meiner Freundin. Alle drei Blogs haben unterschiedliche Anforderungen, unterschiedliche Zielgruppen und daraus resultierend ganz deutlich unterschiedliche Funktionen und Inhalte. Dies macht es erforderlich, dass ich sehr viele unterschiedliche Plug-Ins für WordPress verwende für die unterschiedlichsten Problemstellungen. Mal ist ein Kalender gefragt, mal Instagram oder Pinterest Integration. Ein anderes Mal geht es um Karten oder einem Dienst wie Twit-Pic. Da ich recht lange gesucht habe und viel ausprobiert habe, möchte ich meine Erfahrungen und meine Lieblings-Plug-Ins mit dir teilen und ein klein wenig dazu schreiben. Solltest du Fragen zu den einzelnen Plug-Ins haben, benutz‘ die Kommentarfunktion. Auch, wenn du Fragen zu anderen Plug-Ins hast die ich verwende oder Fragen dazu hast wie ich gewisse Funktionen realisiert habe.

Instagram im Blog mit Instapress

InstapressInstapress ermöglicht es so viele seiner Instagram-Bilder auf einer Seite an zu zeigen wie man möchte. Mittels eines Short Codes kann man dann eine Instagram Galerie in eine Seite oder einen Beitrag des Blogs integrieren. Es ist auch möglich Bilder anderer User, vorausgesetzt ihre Bilder sind public, anzeigen zu lassen. Die Größe und Anzahl der Bilder kann man dabei bestimmen sowie ob die Beschreibungen mit angezeigt werden oder nicht. Instapress kommt ebenfalls zusammen mit einem Sidebar Widget welches den oder die Neuesten Instagram Fotos wiedergibt.  All das ist sehr einfach zu bedienen und ein zu richten. Innerhalb weniger Minuten kann man die Besucher deines Blogs mit ansprechenden Fotos begrüßen. Zu sehen ist Instapress bei mir hier auf Piet’s Blog.

Wer ein ähnliches Plug-In für Pinterest sucht: Hier habe ich gute Erfahrungen mit Apline PhotoTile for Pinterest gemacht. Zu sehen auf dem Blog meiner Freundin BecomeaButterfly.de.

Adieu TwitPic, hallo Tweet Images

Gerne würde ich ein Screenshot von Tweet Images präsentieren, der Nachteil ist jedoch, dass es nichts zu sehen gibt. Zumindest nicht, bis man es zum ersten Mal benutzt hat. Als alter Social Media Junkie benutze ich seit Jahren auch Twitter. Da Twitter bis vor einiger Zeit noch keine Fotos verarbeiten konnte, entstanden Dienste wie TwitPic bei welchen man seine Fotos hochladen und die URL über Twitter anbieten konnte. Mittlerweile unterstützt zwar Twitter das teilen von Fotos doch mehr schlecht als recht. Wo bleiben die Fotos? Irgendwie verschwinden sie ja in der Versenkung bei „YAS“ (Yet another Service) im Netz.

Um diesem Problem etwas entgegen zu setzen habe ich mich auf die Suche gemacht ob nicht auch WordPress so etwas leisten kann. Und, es kann! Mit Tweet Images kann man einen eigenen Twitter Images Dienst für die Benutzer des Blogs anbieten. Viele Twitter Clients (nicht jedoch die Webseite selbst) können dieses dann ansprechen. Ich benutze zum Beispiel TweetBot auf iPhone, iPad und Mac. Mit dem geht es problemlos. Einfach Tweet Images installieren, die API beim jeweiligen WordPress Benutzer aktivieren und ihm den API Key mitteilen. Wenn gewünscht kann man für das Kürzen der URL auch noch seinen bit.ly Account eintragen – hierfür wird ein bit.ly API Key benötigt den man in wenigen Sekunden erstellen kann.

Die Einrichtung erfordert ein wenig Probieren, ist aber innerhalb einer halben Stunde erledigt. Ab jetzt erstellt Tweet Images jedes mal einen Blogpost wenn du auf Twitter ein Bild teilst und fügt die URL in deinen Tweet ein. Alle Bilder bleiben auf deinem Webserver und sind über die Suchfunktion deines Blogs leicht auffindbar. Zu sehen ist Instapress bei mir hier auf Piet’s Blog.

Kalender der Extraklasse

Event CalendarWenn man einen Kalender für Veranstaltungen, Geburtstage oder dergleichen auf seinem Blog anbieten möchte, führt für mich kein Weg an Ajax Event Calendar vorbei. Das Plug-In bietet eigentlich alles was das Herz begehrt. Man kann im Backend Termine eintragen, man kann den Benutzern der Seite erlauben Termine vor zu schlagen, dutzende Felder zu den jeweiligen Terminen pflegen, unterschiedliche Kategorien einrichten, Serientermine eintragen und noch vieles mehr. All das funktioniert sehr einfach und ist innerhalb weniger Minuten eingerichtet. Besonders die Bedienung macht Spaß da durch den Einsatz von Ajax kein Neuladen der Seite notwendig ist wenn man sich Termine anschaut oder zwischen den Monaten hin und her blättert. Nicht zu erwähnen, kommt Event Calendar natürlich auch mit einen Sidebar Widget welches die neuesten Termine wiedergibt.

Ein wichtiges Feature habe ich jedoch vermisst – den iCal Support. Zwar ist dieses Feature schon häufig beim Entwickler gewünscht worden. Dieser will sich auch an die Arbeit machen – aber wenn man es JETZT will, will man es JETZT haben. Ich habe hierfür eine Lösung im Netz gefunden und diese, da sie einen Bug hatte, etwas angepasst. Und zwar muss man in die functions.php Datei im Theme Ordner (so muss man keine Angst haben, dass sie von einem Update überschrieben wird) folgenden Code einfügen:

// Ical Export for Event Calendar for WordPress functions.php
function ical_feed(){
global $wpdb;
$blog_name = get_bloginfo(’name‘);
$blog_url = get_bloginfo(‚home‘);

header(‚Content-type: text/calendar; charset=utf-8‘); //set charset utf 8 since it is ümlaut-freindly
header(‚Content-Disposition: attachment; filename=“event-calendar.ics“‚);

$timezone = get_option(‚timezone_string‘);
// dst = Daylight Saving Time
$is_dst = 0;
if ($timezone) {
$now = time();
$tz = new DateTimeZone($timezone);
$tr = $tz->getTransitions($now, $now);
$is_dst = $tr[0][‚isdst‘];
}
$gmt_offset = get_option(‚gmt_offset‘)-$is_dst;
$d = preg_split(‚/\./‘,$gmt_offset);
$tzname = „GMT+“.two_digits($d[0]).“:“.(($d[1])? two_digits($d[1]) : „00“);
$tzoffsetto = „+“.two_digits($d[0]).(($d[1])? two_digits($d[1]) : „00“);
$tzoffsetfrom = „+“.two_digits($d[0]+1).(($d[1])? two_digits($d[1]) : „00“);
$daylight_tzname = „GMT+“.two_digits($d[0]+1).“:“.(($d[1])? two_digits($d[1]) : „00“);
$daylight_tzoffsetto = „+“.two_digits($d[0]+1).(($d[1])? two_digits($d[1]) : „00“);
$daylight_tzoffsetfrom = „+“.two_digits($d[0]).(($d[1])? two_digits($d[1]) : „00“);
$apostrophe = (isset($_GET[‚content‘]) ? „‚“ : ‚’‘);

$events = “;
$space = ‚ ‚;
$results = $wpdb->get_results(‚SELECT
title,
description,
IF (ALLDAY=1, CONCAT(„;VALUE=DATE:“,DATE_FORMAT(START,“%Y%m%d“)), CONCAT(„:“,DATE_FORMAT(START,“%Y%m%d“),“T“,TIME_FORMAT(START,“%H%i%s“))) AS start,
IF (ALLDAY=1, CONCAT(„;VALUE=DATE:“,DATE_FORMAT(END,“%Y%m%d“)), CONCAT(„:“, DATE_FORMAT(END,“%Y%m%d“),“T“,TIME_FORMAT(END,“%H%i%s“))) AS end,
link,
address,
contact,
contact_info,
repeat_freq,
repeat_int,
CONCAT(„;UNTIL=“, DATE_FORMAT(repeat_end,“%Y%m%d“)) AS rend
FROM ‚ . $wpdb->prefix . AEC_EVENT_TABLE . ‚;‘);
if ($results === false){
$this->log($wpdb->print_error());
} else{
//print_r($results);
foreach ($results as $event) {
$start_time = ($timezone)? preg_replace(‚/(^:.+$)/‘,‘;TZID=‘.$timezone.’$1′,$event->start) : $event->start;
$end_time = ($timezone)? preg_replace(‚/(^:.+$)/‘,‘;TZID=‘.$timezone.’$1′,$event->end) : $event->end;
$endzeitkorrektur = substr($end_time, -8);
$endzeitkorrektur = mktime(0, 0, 0, substr($endzeitkorrektur, -4, 2), substr($endzeitkorrektur, -2)+1, substr($endzeitkorrektur, 0,4));
$endzeitkorrektur = date(„Ymd“, $endzeitkorrektur);
$end_time = str_replace(substr($end_time, -8), $endzeitkorrektur, $end_time);

$summary = stripslashes($event->title);
$link = ($event->link)? ‚URL:‘.$event->link : “;
$location = $event->address;
$organizer = ($event->contact_info)? ‚ORGANIZER:‘.$event->contact_info : “;
$content = ($event->description)? str_replace(‚,‘, ‚\,‘, str_replace(‚\\‘, ‚\\\\‘, str_replace(„\n“, „\n“ . $space, stripslashes(strip_tags($event->description))))) : “;
$freq = $event->repeat_int;
$interval = $event->repeat_freq;
$rend = ($event->rend)? $event->rend : „;“;
$freq = ($freq == 0)? „DAILY“ : (($freq == 1)? „WEEKLY“ : (($freq == 2)? „MONTHLY“ : (($freq == 3)? „YEARLY“ : false)));
$rrule = ($interval > 0)? ‚RRULE:FREQ=‘.$freq.‘;INTERVAL=‘.$interval.$rend : false;
$events .= <<<EVENT
BEGIN:VEVENT
DTSTART$start_time
DTEND$end_time
SUMMARY:$summary
DESCRIPTION:$content
LOCATION:$location
$rrule
$organizer
$link
SEQUENCE:4
END:VEVENT

EVENT;
}
}

$content = <<<CONTENT
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//$blog_name//NONSGML v1.0//EN
X-WR-CALNAME:{$blog_name} Rennkalender
X-ORIGINAL-URL:{$blog_url}
X-WR-CALDESC:{$blog_name} Rennkalender
METHOD:PUBLISH
BEGIN:VTIMEZONE
BEGIN:DAYLIGHT
TZOFFSETFROM:$daylight_tzoffsetfrom
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
DTSTART:19810329T020000
TZNAME:$daylight_tzname
TZOFFSETTO:$daylight_tzoffsetto
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:$tzoffsetfrom
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
DTSTART:19961027T030000
TZNAME:$tzname
TZOFFSETTO:$tzoffsetto
END:STANDARD
END:VTIMEZONE
{$events}END:VCALENDAR
CONTENT;

//get line breaks right (CF/LR)
$content = nl2br($content);
$content = str_replace(„\n“ , “ , $content);
$content = str_replace(„\r“ , “ , $content);
$content = str_replace(„<br />“ , „\r\n“ , $content);

// strip empty lines when no location and url is set (max 3 empty lines)
$content = str_replace(„\r\n\r\n“ , „\r\n“ , $content);
$content = str_replace(„\r\n\r\n“ , „\r\n“ , $content);
$content = str_replace(„\r\n\r\n“ , „\r\n“ , $content);

echo $content;

exit;
}
function two_digits($value){
return preg_replace(‚/(^\d{1}$)/‘,’0$1′,$value);
}

if (isset($_GET[‚ical‘]))
{
add_action(‚init‘, ‚ical_feed‘);
}

Der Original-Code stammt von Google-Code – die Änderungen stammen von mir. Die Anpassungen waren notwendig da, bei allen ganztägigen Events der letzte Tag nicht angezeigt wurde. Zweitätige Events gingen also nur einen (den ersten) Tag – eintägige Events wurden nicht angezeigt.

Hat man diesen Code eingefügt kann man sein iCal unter folgender URL erreichen: webcal://www.MEINBLOG.de?ical

Um den Benutzern jedoch die Einrichtung von iCals zu erleichtern habe ich einen Blog Eintrag geschrieben der das Einrichten in unterschiedlichen Clients beschreibt. Zu sehen ist mein Ajax Event Calender auf meinem RC Auto Blog ice-net.de.

Frontpage category filter und AZIndex

Ob des langen vorherigen Eintrags, mache ich die Beschreibung dieser zwei nützlichen Helferlein etwas kürzer. Frontpage category filter hilft dabei manche Blogeinträge nicht auf der Startseite bzw. in seinem Blog Feed an zu zeigen. Auf ice-net.de gibt es verschiedene Kategorien von Inhalten. News und Berichte allerdings auch Archivinhalte wie ein Lexikon. Letzteres sollte natürlich nicht jedes Mal auf der Startseite gezeigt werden. Mittels Frontpage Category Filter kann man gewisse Kategorien auf der Startseite seines Blogs ausblenden.

AZIndex erstellt eine alphabetische Liste von Einträgen einer bestimmten Kategorie. Hierbei kann man einen schönen Index anzeigen lassen und so weiter. Ideal für das Aufbauen von FAQ Liste, einem Lexikon oder Tipps und Tricks.

Zu sehen sind beide Plug-Ins in Aktion auf ice-net.de.

MapPress Easy Google Maps

MappressMapPress ermöglicht es auf einfache Art GooleMaps Karten in Blogposts oder Seiten zu integrieren. Diese Anforderung ergab sich mir dadurch, dass auf ice-net.de ein Verzeichnis von RC-Rennstrecken entstehen sollte samt Bild bzw. Lage der jeweiligen Rennstrecke. Mittels MapPress lässt sich dies relativ einfach realisieren. Über eine Suchmaske unterhalb es Text Editors für den Blogeintrag kann man eine Adresse suchen. Anschließend kann man den Kartenausschnitt und die Stecknadel noch justieren und die Größe der Karte im Blogeintrag fein justieren. Am Ende fällt ein einfacher Shortcode heraus den man in den Blogeintrag einfügen kann. Nicht nur eine Stecknadel ist möglich, man kann auch beliebig viele Pins in einer Karte anzeigen. Was leider nicht geht, was ich mir wünschen würde ist, dass man alle Pins all seiner erstellten Karten in einer Übersicht anzeigt, welche dann wieder auf die einzelnen Blogposts verweist. Aber was nicht ist, kann ja noch werden.

Scissors Continued

Wer kennt nicht das Problem, dass Bilder vom eigenen Blog auf anderen Seiten verwendet werden. Wenn wenigstens das Bild heruntergeladen und auf dem eigenen Webserver gespeichert werden würde, wäre das noch erträglich. Nicht mehr erträglich wird es, wenn einfach nur der Link zum Bild eingebettet wird. So stellt man nicht nur den Inhalt sondern auch noch den Webspace und das Transfervolumen zur Verfügung. Abhilfe kann hier ein Wasserzeichen schaffen. Dieses zeigt wenigstens die Herkunft des Bildes an. Ich verwende es explizit nicht um irgendein Copyright zu signalisieren da einige Bilder auf meinen Blogs nicht durch mich erstellt wurden.

Nun ist es sehr mühsam und meist unterwegs nicht leistbar Wasserzeichen von Hand in jedes Bild deines Blogs ein zu fügen – ein Plug-In muss her. Dies leistet eigentlich ganz gut Scissors Continued. Durch Hinterlegen eines PNG files kann man bestimmen wie das Wasserzeichen aussehen soll. Die Einstellungen erlauben es zu definieren in welchen Bildgrößen es wo eingefügt werden soll. Ein sehr hilfreiches und zuverlässig arbeitendes Tool das auf all meinen Blogs seinen Dienst verreichtet.

 

Selbstverständlich verwende ich noch einige weitere Plug-Ins auf diesen drei Seiten. Hier jedes Einzelne von ihnen zu behandeln würde meinen, und vielleicht auch deinen, zeitlichen Rahmen sprengen. Bei Gelegenheit werde ich mal wieder einen Post zu den Neuerungen verfassen. Wenn Fragen auftauchen einfach die Kommentarfunktion nutzen.

Wenn dir der Artikel gefallen hat, dann bitte teile ihn mit deinen Freunden

Leave a Reply

Your email address will not be published. Required fields are marked *