Bilderarchiv mit WordPress Custom Post Types

Wordpress

In mir keimte kürzlich der Wunsch auf, Fotos nicht nur in sozialen Netzwerken zu teilen, sondern ab und an auch als selbstgehostetes Backup im eigenen Blog zu platzieren. Ein ganz privates Instagram sozusagen, teilbar, kommentierbar und komplett in meiner Hand.

Ich bin kein Fotograf und habe auch keine Ambitionen, dem Thema Fotografie vollumfänglich zu verfallen. Ich knipse ausschließlich per Smartphone und zu großen Teilen im Automatikmodus. Eine Bildersammlung ist also rein als mein persönlicher Erinnungsstream zu sehen und nicht als Ausstellungsbereich für tolle Fotos.

Ich wollte reine Bilderbeiträge nicht im normalen Blogstream haben, also lag es nahe, auf die WordPress Custom Post Types zurückzugreifen. Wie das recht einfach ohne Plugin zu realisieren ist, erläutere Ich nachfolgend.

Zunächst einmal generiert man sich den Code für einen neuen WordPress Custom Post Type, der i.d.R. in die functions.php des Themes eingefügt werden muss. Ich habe dafür diesen Onlinegenerator genutzt. Mit diesem klickt man sich einfach die Funktionen zusammen, die der neue Bereich im Blog haben soll. Jeder Schalter wird dort erläutert, es liegt also ganz an der persönlichen Vorliebe, welche Funktionen der Custom Post Type am Ende haben soll.

Wichtig ist dabei nur, dass der Wert „Name“ automatisch als neuer Permalink-Teil für den PostType genutzt wird. In meinem Fall habe ich einfach „IMG“ gewählt, weil ich wollte, dass die Bilder hier im Blog am Ende mit der URL renehesse.de/img/bildname/ aufgerufen werden können. Möchtet ihr, dass sich der Name von diesem URL-Teil unterscheidet, könnt ihr auch einfach folgenden Teil im Code des Custom Post Types anpassen.

register_post_type( 'img', $args );

Wer neue Beiträge über Jetpack Publicize zu sozialen Netzwerken teilt, der müsste im supports Teil des Codes publicize noch hinzufügen. Dann funktioniert das Teilen auch beim neuen Post Type.

'supports' => array('title', 'editor', 'thumbnail', 'comments', 'publicize' ),

Nachdem ihr den kompletten Code nach euren Wünschen erstellt, eingefügt und gespeichert habt, sollte im WordPress-Adminbereich ein neuer Menüpunkt für die Bilder auftauchen. In meinem Fall schaut der wie folgt aus.

Images Custom Post Type

Damit der neue Custom Post Type auch erreichbar ist, muss in der Regel unter Einstellungen → Permalinks einmal der Speichern-Button geklickt werden.

Jetzt könnt ihr im Grunde schon loslegen und Inhalte unabhängig von eurem Haupstream veröffentlichen. Das Archiv für diese Inhalte ist dann unter /img/ aufzufinden. Spätestens hier sollte klar sein, dass das Bildarchiv wirklich nur ein Beispiel ist, natürlich lassen sich auf diesem weg sämtliche Inhalte separieren.

Auch nützlich sind Abfragen zum Post Type im Theme. So kann man zum Beispiel gewisse Inhalte nur dann ausgeben, wenn es sich um eine Einzelseite des Post Types handelt. Das Prinzip ist bekannt. Für mein Beispiel klappt das mit folgender Abfrage.

<?php if(is_singular('img')) { ?>Das ist eine Bilderseite<?php } ?>

Das ist auch für Archivseiten möglich. Dafür nutzt man folgende Bedingung.

is_post_type_archive('img')

Wem das alles zu hakelig ist oder wer generell überfordert von der Sache ist, der kann Custom Post Types auch per Plugin erstellen. Ich bin kein Freund davon, wenn es sich vermeiden lässt, für Einsteiger ist das aber eventuell die bessere Lösung.

Da in meinem Fall alles wie gewünscht funktioniert hat, habe ich nun unter renehesse.de/img/ einen Unterbereich, der nur für Bilder da ist und vollkommen getrennt von den Blogposts läuft. Dort packe ich hin und wieder Fotos rein, ergänze diese unter Umständen mit einem iFrame-Code von Google Maps und das war es auch schon. Jeder Custom Post Type hat auch einen eigenen Feed.

Da ich die letzten Bilder-Beiträge zusätzlich noch in meinem Theme ausgeben lasse (mal in diesem Beitrag hier ganz runter scrollen), sei auch dafür noch der entsprechende Code erwähnt. Das klappt unter anderem mit folgender Anweisung für einen WP Query.

<?php $the_query = new WP_Query('posts_per_page=7&post_type=img'); ?>
<?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>

<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>

<?php endwhile; wp_reset_postdata(); ?>

Teilen

Du bist hier: / / ...