Post Thumbnails in Custom Post Types

Vor kurzem stellte ich fest, dass bei einem Facebook-Like, nicht das richtige Thumbnail auf Facebook angezeigt wird. In meiner Lösung "Like auf Facebook: Richtiges Bild anzeigen" nutze ich den Mechanismus von Post Thumbnails. In einem Custom Post Type, den ich nutze, hatte ich Post Thumbnails jedoch vergessen zu aktivieren.

Aktivieren kannst du Post Thumbnails direkt über die Methode register_post_type(). Diese akzeptiert als zweiten Parameter ein assoziatives Array. Mit dem Schlüssel "supports" kannst du darin angeben, was dein Custom Post Type so alles unterstützen soll:

register_post_type('custompostname', array(
            'labels' => array(
                'name' => 'Custom Post Type', 
                'singular_name' => 'Custom Post Type'
            ),
            'public' => true, 
            'show_ui' => true, 
            'capability_type' => 'post', 
            'supports' => array('title', 'excerpt', 'editor', 'thumbnail', 'comments')
));

Wie du im Beispiel sehen kannst, kannst du mit supports => array('thumbnail') die Artikelvorschaubilder für deinen Custom Post Type aktivieren.

Like auf Facebook: Richtiges Bild anzeigen

Ich habe vor kurzem erstmals den Like-Button in meinem Online Games-Blog eingebaut. Allerdings werden im Facebook-Stream die falschen Bilder zu einem "Like" angezeigt. Der Facebook-Crawler wählt hier irgendein zufälliges Bild aus - irgendwie unbefriedigend.

Glücklicherweise kann man Facebook mit einem Meta-Tag mitteilen, welches Bild als Vorschaubild im Stream des "LIKEnden" angezeigt werden soll:

<link rel="image_src" href="Pfad zum Bild" />

Falls du in deinem WordPress die Artikelvorschaubilder (Post Thumbnails) nutzt, dann kannst du folgenden Code einfach in deine header.php einbauen:

if (is_object($post) and has_post_thumbnail($post->ID)):
    $imgTag = get_the_post_thumbnail($post->ID, array(200, 200));
    $img = preg_replace('#^.*src="([^"]+)".*$#Ui', '$1', $imgTag);
    echo '<link rel="image_src" href="' . $img . '" />';
endif;

Der Code sollte irgendwo im <head>-Bereich seinen Platz finden. Als kleine Verbersserung könntest du noch ein Standardbild ausgeben, für den Fall, dass has_post_thumbnail() false zurück gibt.

Funktion "is_user_logged_in" in Plugin verwenden

Die WordPress-Funktion is_user_logged_in() gibt true zurück, wenn der aktuelle User eingeloggt ist, andernfalls false. Du kannst diese Funktion jedoch nicht direkt in deinem Plugin nutzen, da das Plugin aufgerufen wird, bevor is_user_logged_in() deklariert wurde. So liefert folgender Code eine Fehlermeldung:

<?php
/*
Plugin Name: Beispiel Plugin
*/
if (is_user_logged_in())
    // tu was
?>

Die Fehlermeldung, die der Code erzeugt ist:

Fatal error: Call to undefined function is_user_logged_in().

Falls du die Funktion is_user_logged_in() dennoch nutzen willst, musst du sie in eine Funktion packen, die du über eine spätere Aktion aufrufst ("hookst"). Z.B.:

add_action('after_setup_theme', 'meine_funktion_die_is_user_logged_in_nutzt');

function meine_funktion_die_is_user_logged_in_nutzt() {
    if (is_user_logged_in())
        // tu was
}

In der Funktion, die als 2ter Parameter an add_action() übergeben wird, kann is_user_logged_in() wie gewohnt verwendet werden. Als Aktionen können, neben "after_setup_theme" noch viele andere verwendet werden. Die Wahl solltest du davon abhängig machen, was du konkret in der Funktion vor hast.