Seit letzter Woche stellt Facebook ein Plugin für WordPress zur Verfügung, um die Blogger und die Leserschaft noch einfacher zu einander zu bringen. Auf der entsprechenden Entwicklerseite von Facebook heißt es: „Facebook for WordPress enables you to make your site social in a couple of clicks. No coding needed.“ Also dachte ich mir, mach doch mal die paar Klicks und schau dir an, wie toll das alles funktioniert. Doch das läuft so leider nicht und ich breche jetzt nach ca. 4 Stunden erst einmal ab und schaue, was mit meinen Meldungen im Forum zum Plugin passiert…
Aber man soll ja immer mit dem Guten anfangen: Die Installation des Plugins in WordPress lief absolut reibungslos! Es wird ein neuer Tab im Backend angelegt, über den man die Einstellungen erreicht. Hier wird man mit dem Hinweis begrüßt, dass man erst eine App bei Facebook anlegen muss. Da die entsprechenden Links dabei stehen, sollte das ja kein Problem sein. Denkste!!! Leider gibt es zu viele Details, die man eben schnell mal übersehen kann und man erhält trotzdem eine App-ID samt App-Secret. Naja, nach dem dritten Mal hat dann alles gepasst und die App inkl. der notwendigen Rechte im „Open Graph„-Tab war erstellt, was mit der guten Nachricht „Facebook social publishing is enabled. Link your Facebook account to your WordPress account to get full functionality, including adding new Posts to your Timeline.“ quittiert wurde…
Doch damit fängt der Spaß erst richtig an, denn ein Klick auf den Link brachte… NICHTS 🙁 Ein Blick in die JavaScript-Konsole verrät aber, dass das Facebook-Objekt nicht bekannt ist. Nach einigem Suchen ist das auch nicht verwunderlich, fehlt doch sowohl die Einbindung der globalen Facebook-JavaScript-Datei:
<script type='text/javascript' src='http://connect.facebook.net/de_DE/all.js'></script>
als auch der initiale DIV-Container:
<div id="fb-root"></div>
Auf der Suche nach der Ursache muss man feststellen, dass die Aussagen über die Versionskompatibilität des Plugins schlicht weg falsch sind! Laut der Plugin-Seite ist die Verwendung am WP 3.1.1 möglich. Allerdings gibt es viele Posts im Forum, dass erst nach einem Update auf 3.4 die Verlinkung funktioniert. Und das ist nicht verwunderlich: In der Funktion fb_js_sdk_setup() der fb-core.php gibt es zwei Stellen, die bei WP 3.1.X gar nicht oder nur mit Warnung funktionieren. Hier das Original:
$locale = fb_get_locale(); if ( ! $locale ) return; wp_enqueue_script( 'fb-connect', ( is_ssl() ? 'https' : 'http' ) . '://connect.facebook.net/' . $locale . '/all.js', array(), null, true ); add_action( 'wp_footer', 'fb_root' );
Das Problem ist, dass die Funktion wp_enqueue_script() mit dem Update auf WP 3.2 überarbeitet wurde und erst ab dann überall benutzt werden kann. In den vorherigen Versionen muss sie allerdings über einen Action-Hook eingebunden werden! Des Weiteren wird der benutzte Hook für den DIV-Container nicht im Backend ausgeführt, was aber nicht ganz so schlimm ist, da Facebook dies notfalls selber nachholt. Ich habe also folgende Anpassungen vorgenommen:
/** * removed by NiDa $locale = fb_get_locale(); if ( ! $locale ) return; wp_enqueue_script( 'fb-connect', ( is_ssl() ? 'https' : 'http' ) . '://connect.facebook.net/' . $locale . '/all.js', array(), null, true ); ****/ add_action( 'wp_footer', 'fb_root' ); add_action( 'admin_footer', 'fb_root' ); } /** * Hack by NiDa */ function fb_nida_enqueue_connect_script() { $locale = fb_get_locale(); if ( ! $locale ) return; wp_enqueue_script( 'fb-connect', ( is_ssl() ? 'https' : 'http' ) . '://connect.facebook.net/' . $locale . '/all.js', array(), NULL, true ); }
Um dann die neue Funktion einzubinden, muss man nur noch zwei Zeilen in der facebook.php ergänzen:
/** * Hack by NiDa to let this plugin run eben with WP 3.1.X */ add_action( 'wp_enqueue_scripts', 'fb_nida_enqueue_connect_script' ); add_action( 'admin_enqueue_scripts', 'fb_nida_enqueue_connect_script' );
Und wenn das alles getan ist, erscheint mit einem Klick auf den o.g. Link tatsächlich das bekannte Fenster von Facebook, um den Zugriff der App auf die Webseite zu erlauben! Allerdings hält die Freude über diesen Erfolg nicht lange an 🙁 denn nun scheint der Access-Token nicht im Blog gespeichert zu werden und der Link verschwindet nicht. Ein Blick in die Konsole verrät nicht viel, außer man schaut direkt nach einem Klick hin! Denn dann sieht man für 5 Sekunden, dass der Browser den Zugriff zwischen zwei Frames mit unterschiedlicher URL verbietet…
Ich warte also gespannt auf die weitere Entwicklung des Plugins und melde mich hoffentlich bald mit einem Erfolg! 😎
Wow, da hast du dir ja richtig Arbeit gemacht! Gibt es einen speziellen Grund, warum du bei WP 3.1 bleiben möchtest?
Offtopic, nur aus Neugierde gefragt: Warum hast du hier 3 verschiedene Plugins aktiv, die alle je ein Button für Twitter, FB, G+ und LinkedIn generieren?
Was heißt möchten? Auf meinem Server müsste sowohl PHP als auch MySQL aktualisiert werden, was meine Admins und ich nicht tun wollen. Wahrscheinlich ziehen wir intern demnächst sowieso um…
Danke für den Hinweis auf die „Plugin-Vielfalt“ 😉 Ich habe die doppelten Einträge bei Sociable deaktivert. Aber wie drei Plugins?
So, jetzt hat Facebook die Minimum-Version auf 3.2.1 angehoben: http://wordpress.org/support/topic/plugin-facebook-plugin-not-working-with-wp-31x
Leider hilft mir das immer noch nicht weiter 🙁