Kategorie-Archiv: Wordpress

Wordpress ist das erfolgreichste Blogsystem aller Zeiten und kann hervorragend als CMS eingesetzt werden. Sogar die ganz großen Seiten, wie ZDNet migrieren auf Wordpress. Durch ein auf Hooks basierendes Pluginsystem wurde Wordpress so erfolgreich, wie es heute ist.

Facebook WordPress-Plugin und Deutsche Umlaute

Wenn der Quellcode, auf dem Facebook liegt, der Codequalität des offiziellen Facebook-Plugins für WordPress gleicht, dann denke ich, daß die Programmiersektion von Facebook der größte Abnehmer für Aspirin ist. Das ist einfach nur schlimm!

Aber nicht nur für den Codeästheten, auch im Praxisbetrieb ist dieses Plugin einfach nur Schrott. Ständig läuft der Token für die Konnektierung ab, woran das liegt, das habe ich schon eruiert, aber vom Fix bin ich da noch weit entfernt.

Was sicherlich ganz viele nervt, ist die Tatsache, daß beim Posten von WordPress-Posts auf die Timeline einfach nur peinlicher Zeichensalat die Fanpage verhunzt. Dem Quellcode entsprechend mal ganz Quick&Dirty an gefixt, sollte man natürlich in die function fb_strip_and_format_desc() auslagern, keine Ahnung welche Seiteneffekte das hätte.

Hier mal mein aktueller Stand, um das offizielle Facebook-Plugin für WordPress ohne HTML-Entities auf die Timeline posten zu lassen. Suche die Datei wp-content/plugins/facebook/fb-social-poster.php die function() fb_post_to_fb_page, dort die fett markierten functions einfügen, also html_entity_decode() und strip_tags()

/**
* Posts a published WordPress post to a Facebook Page’s Timeline
*
* @since 1.0
* @param int $post_id The post ID that will be posted
*/
function fb_post_to_fb_page($post_id) {
global $facebook;
global $post;

// thanks to Tareq Hasan on http://wordpress.org/support/topic/plugin-facebook-bug-problems-when-publishing-to-a-page
if ( isset ( $post_id ) ) {
$post = get_post( $post_id );
setup_postdata( $post );
}

$options = get_option(‚fb_options‘);

if (!isset($options[’social_publisher‘]) || !isset($options[’social_publisher‘][‚publish_to_fan_page‘]) || $options[’social_publisher‘][‚publish_to_fan_page‘] == ‚disabled‘)
return;

preg_match_all(„/(.*?)@@!!(.*?)@@!!(.*?)$/su“, $options[’social_publisher‘][‚publish_to_fan_page‘], $fan_page_info, PREG_SET_ORDER);

if ( isset( $fan_page_info ) && isset( $fan_page_info[0] ) && isset( $fan_page_info[0][2] ) ) {
// does current post type and the current theme support post thumbnails?
if ( post_type_supports( $post->post_type, ‚thumbnail‘ ) && function_exists( ‚has_post_thumbnail‘ ) && has_post_thumbnail() ) {
list( $post_thumbnail_url, $post_thumbnail_width, $post_thumbnail_height ) = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), ‚full‘ );
}

$fan_page_message = get_post_meta($post_id, ‚fb_fan_page_message‘, true);

if ( !isset ( $post_thumbnail_url ) ) {
$args = array(‚access_token‘ => $fan_page_info[0][3],
‚from‘ => $fan_page_info[0][2],
‚link‘ => apply_filters( ‚rel_canonical‘, get_permalink()),
’name‘ => html_entity_decode(get_the_title()),
‚caption‘ => html_entity_decode(strip_tags(apply_filters( ‚the_excerpt‘, get_the_excerpt() ))),
‚description‘ => html_entity_decode(strip_tags(fb_strip_and_format_desc( $post ))),
‚message‘ => $fan_page_message,
);
}
else {
$args = array(‚access_token‘ => $fan_page_info[0][3],
‚from‘ => $fan_page_info[0][2],
‚link‘ => apply_filters( ‚rel_canonical‘, get_permalink()),
‚picture‘ => $post_thumbnail_url,
’name‘ => html_entity_decode(get_the_title()),
‚caption‘ => html_entity_decode(strip_tags(apply_filters( ‚the_excerpt‘, get_the_excerpt() ))),
‚description‘ => html_entity_decode(strip_tags(fb_strip_and_format_desc( $post ))),
‚message‘ => $fan_page_message,
);
}