Sponsored Link
今回は
記事をFacebookに投稿する場合に、
Facebookのタイムラインに表示される画像と設定方法
についての備忘録です。
これは、
自分で記事をFacebookに共有する場合だけでなく、
あなたの記事を読んだ誰かがFacebookにシェアした
場合にも有効な方法です。
この記事では、プラグインを使わないで
設定します。
特に、All in One SEO packを使っていて、エラーが出る場合は、
以下のとおりにすれば解決する可能性が高いです。
プラグインを使わない設定方法
1.xmlnsの変更
賢威6.1コーポレート版: ヘッダー (header.php)では、
一番上はこのようになっていました。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="ja" lang="ja" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml" itemscope="itemscope" itemtype="http://schema.org/"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
この2行目の
<html xmlns=
から始まる部分を、
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
に変更します。
2.</head>の直前に以下のコードを貼付
<!--OGP開始--> <meta property="fb:admins" content="カスタマイズ部分1" /> <meta property="og:locale" content="ja_JP"> <meta property="og:type" content="blog"> <?php if (is_single()){// 投稿記事 if(have_posts()): while(have_posts()): the_post(); echo '<meta property="og:description" content="'.get_post_meta($post->ID, _aioseop_description, true).'">';echo "\n";//抜粋から endwhile; endif; echo '<meta property="og:title" content="'; the_title(); echo '">';echo "\n";//投稿記事タイトル echo '<meta property="og:description" content="'; bloginfo('description'); echo '">';echo "\n";//「一般設定」で入力したブログの説明文 echo '<meta property="og:title" content="'; bloginfo('name'); echo '">';echo "\n";//「一般設定」で入力したブログのタイトル } ?> <meta property="og:site_name" content="<?php bloginfo('name'); ?>"> <?php $str = $post->post_content; $searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i';//投稿記事に画像があるか調べる if (is_single() or is_page()){//投稿記事か固定ページの場合 if (has_post_thumbnail()){//アイキャッチがある場合 $image_id = get_post_thumbnail_id(); $image = wp_get_attachment_image_src( $image_id, 'full'); echo '<meta property="og:image" content="'.$image[0].'">';echo "\n"; } else if ( preg_match( $searchPattern, $str, $imgurl ) && !is_archive()) {//アイキャッチは無いが画像がある場合 echo '<meta property="og:image" content="'.$imgurl[2].'">';echo "\n"; } else {//画像が1つも無い場合 echo '<meta property="og:image" content="カスタマイズ部分2:画像のURL貼付">';echo "\n"; } } else {//投稿記事や固定ページ以外の場合(ホーム、カテゴリーなど) echo '<meta property="og:image" content="カスタマイズ部分3:画像のURL貼付">';echo "\n"; } ?> <!--OGP完了-->
- 上記カスタマイズ部分1には、Facebook IDを入れます。
FacebookIDは、自分のFacebookのプロフィール画面で
プロフィール画像をクリックしたとき、 後ろの方に
&type=という文字がありますが、この前に表示された
15ケタの数字です。
(URL欄に、…&set=a.数字の羅列1.数字の羅列2.
数字の羅列3&type=…と表示されているはずですが、
これのうち数字の羅列3のことです。) - 上記カスタマイズ部分2, 3には、表示する画像を個別に
指定しなかった場合に表示させる画像のURLを記入します。
画像のURLは、メディア→表示させたい画像とクリックすると
見られます。
なお、画像の大きさは最低200px×200px以上でなければなりません。
3.function.phpの編集
jetpackを入れている方は、function.phpの好きな場所に
以下のコードを加えます。
add_filter('jetpack_enable_opengraph', '__return_false', 99);
私は、<?phpのすぐあとに加えてみました。
4.確認
以上の設定がすんだら、
デバッガーのサイトで
ホームページURLと、適当な記事のURLを入力します。
赤い警告がでなければそれでOKです。
5.おまけ:エラーメッセージ
当初私は、上の2.の項目で、異なる記述をしていました。
そうすると、上記デバッガーで確認したとき、
「More Than One OG URL Specified」
という赤い警告がでて、どうしても消えなかったのですが、
10行目と11行目の間に当初入っていた
echo ‘<meta property=”og:url” content=”‘; bloginfo(‘url’); echo ‘”>’;echo “\n”;//「一般設定」で入力したブログのURL
の記述と
12行目と13行目の間に当初入っていた
echo ‘<meta property=”og:url” content=”‘; the_permalink(); echo ‘”>’;echo “\n”;//投稿記事パーマリンク
} else {//投稿記事以外(ホーム、カテゴリーなど)
の記述を消したら
上手くいきました。
“og:url” が含まれる記述は、All in One SEO Packかいずれかのプラグインと
重複する記述だったのだと思います。
(私はWordbooker入れていないので)