If you are using the Facebook “Like” button on your page, you may want to have a better control over it – including an Admin page. (More about Open Graph protocol.)
You'll need a logo image for your blog and put it to your Thematic /images/ directory, or, if you are using a child theme, to your child themes /images/ directory. Put the following code snippet to your functions.php of Thematic, or, if you are using a child theme, of your child theme:
(If you need to find out your Facebook ID, click on the "Photos" tab of your FB profile, select your profile photos, and grab the number of the http://www.facebook.com/…&id=YOUR_ID part.)
/*
* Facebook Open Graph
*/
function open_graph($content) {
$content .='<meta property="fb:admins" content="YOUR_FACEBOOK_ID" />' . "\n";
if (is_home() || is_front_page()) {
$url = get_option('home');
$title = get_bloginfo('name');
$description = get_bloginfo('description');
$article = 'blog';
} else {
global $post;
$url = get_permalink($post->ID);
$title = get_the_title();
$description = get_the_excerpt();
$article = 'article';
}
$content .='<meta property="og:site_name" content="' . get_bloginfo('name') . '" />' . "\n";
$content .='<meta property="og:title" content="' . $title . '" />' . "\n";
$content .='<meta property="og:description" content="' . $description . '" />' . "\n";
$content .='<meta property="og:type" content="' . $article . '" />' . "\n";
$content .='<meta property="og:url" content="' . $url . '" />' . "\n";
$content .='<meta property="og:image" content="' . get_bloginfo('stylesheet_directory') . '/images/YOUR_LOGO.jpg" />' . "\n";
return $content;
}
add_filter ('thematic_create_description', 'open_graph');
function open_graph_doctype($content) {
$content = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
$content .= '<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml"';
return $content;
}
apply_filter('thematic_create_doctype', 'open_graph_doctype');
Please note that the document won't validate as XHTML 1.0 Transitional anymore. Changing it to the required DOCTYPE XHTML + RDFa (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
) would make it almost like XHTML 1.1, which is Strict, but will easily brake existing forms etc.
If you are not using a caching solution (like WP Super Cache or Hyper Cache), you could restrict the meta tags to be shown the Facebook crawler only:
function open_graph($content) {
if ($_SERVER['HTTP_USER_AGENT'] == 'facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)') {
[the stuff from above]
}
}
Enjoy!