Mal wieder ein kleiner Exkurs in den Maschinenraum.

Facebook bietet mit dem OpenGraph Protokoll ein Werkzeug für Webseitenbetreiber, um die Inhalte der Seite für Facebook nutzbar zu machen. Ob man das wirklich möchte, muss sich jeder selbst überlegen, aber Fakt ist, dass FB mittlerweile so in den Alltag der meisten Netzbenutzer eingebunden ist, dass man sich damit auseinandersetzen muss.

Wenn eine FacebookbenutzerIn einen teilenswerten Inhalt/Artikel hier im Blog findet, wird sie die URL des Artikels in das "Link teilen" Feld eintragen und abschicken (oder den "Share This" Kram von Facebook benutzen, den ich hier aber nicht auf der Seite habe). Facebook "sucht" dann auf der verlinkten Seite, nimmt das erste Bild und den ersten auswertbaren Text, den es findet. Je nachdem, wie der eigene Quelltext organisiert ist, muss diese automatisierte Zusammenfassung jedoch nicht unbedingt etwas mit dem eigentlich geteilten Inhalt zu tun haben - der FB-Bot ist halt recht blöd unflexibel.

Um genauer zu steuern, was dieser Bot zur Generierung der Facebook-internen Vorschau des geteilten Links benutzt, kann man das openGraph Protokoll benutzen.

Damit eine WordPress-angetriebene Website facebookfreundliche Seiten anbietet, muss man ein wenig Code in die functions.php und die header.php des verwendeten Themes zugeben:

In die header.php, irgendwo nach dem <title>-Tag und vor dem schliessenden </header>-Tag, kommt:

<!-- Start Facebook Opengraph -->
 <meta property="og:type" content="article"/>
 <meta property="og:title" content="<?php the_title() ?>"/>
 <meta property="og:site_name" content="{DEINBLOGTITEL}"/>
 < ?php
 function og_meta_desc() {
        global $post;
        $meta = strip_tags($post->post_content);
        $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
        $meta = substr($meta, 0, 200);
        echo "<meta property=\"og:description\" content=\"".htmlspecialchars($meta)."\"/>";
 }
 og_meta_desc();
 ?>
 </meta><meta property="og:url" content="<?php the_permalink() ?>"/>
 </meta><meta property="og:image" content="<?php echo catch_that_image() ?>"/>
</meta>

wobei {DEINBLOGTITEL} mit irgendwas sinnvollem gefüllt werden sollte :-)

Update

Der Codeabschnitt macht natürlich am meisten Sinn, wenn er nur in der Artikelansicht eines einzelnen Beitrages auftaucht, deshalb sollte man ihn mit dem WordPress-Conditional Tag is_single() einfassen:

< ?php if( is_single() ){ ?>
( dann den Kram von weiter oben)
< ?php } ?>


// Ende Update

In die functions.php kommt:

< ?php
/* facebook opengraph zeugs */
function catch_that_image() {
       global $post, $posts;
       $first_img = '';
       ob_start();
       ob_end_clean();
       $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
       $first_img = $matches [1] [0];
       if(empty($first_img)){ //Defines a default image
               $first_img = "{URL://ZUEINEMPLATZ/HALTER/BILD}";  // logo?
       }
       return $first_img;
}
?>

wobei {URL://ZUEINEMPLATZ/HALTER/BILD} mit einer URL zu einem Bild versehen werden sollte, das erscheinen soll, wenn kein Artikelbild zur Verfügung steht (bei mir ist es das Gitarrenlogo aus dem Header).
(Der Code zum Finden des ersten Bildes stammt von wprecipes.com).

Und schon klappt es mit der Facebook-konformen Inhalteteilerei. :)