2011/11/25

WordPressでpost_thumbnailをog:imageに指定するのは意外と面倒くさいという話

例えばkosukekato.comではFacebook用のog:imageの指定をこのようにしています。個別記事でFlickrという名前のカスタムフィールドに画像が指定されている場合はそれを、画像がない場合と個別記事じゃない場合は僕のイラストを表示しましょう、という処理です。

<meta property="og:image" content="<?php if(is_single()) { $image= get_post_meta($post->ID,'Flickr',TRUE); if (!empty($image)) { echo $image.'.jpg'; } else { echo 'https://ex-tra.jp/kosukekato/images/profile_face.gif'; } } else { echo 'https://ex-tra.jp/kosukekato/images/profile_face.gif'; } ?>" />

ただ、これ、WordPressの投稿サムネイル(post_thumbnail)を指定しようとすると、途端に面倒くさくなります。

<meta property="og:image" content="<?php if(is_single()) {
global $wpdb;
$the_thumbnail_id = get_post_thumbnail_id($post->ID);
$the_thumbnail_name = $wpdb->get_var( "SELECT meta_value FROM $wpdb->postmeta WHERE post_id = '$the_thumbnail_id' AND meta_key = '_wp_attached_file'" );
echo bloginfo('url').'/wp/wp-content/uploads/'.$the_thumbnail_name;
} else { echo 'https://ex-tra.jp/kosukekato/images/profile_face.gif''; } ?>" />

ようはecho get_the_post_thumbnailみたいなので、画像のファイルパスだけ取れれば良いのですが、img srcから始まってしまうので、サムネイルのID拾って画像ファイル名取ってこないといけないんですね、いやはや。こういう時に頼りになるのは英語記事。

How to Get Image Thumbnail Filename in WordPress

よしよし。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
WordPressデザインレシピ集
狩野 祐東
技術評論社
売り上げランキング: 197,569
WordPress 高速化&スマート運用必携ガイド
こもりまさあき 岡本渉
エムディエヌコーポレーション
売り上げランキング: 435,263