Jetpack Photonからのアイキャッチ画像URLを取得
仕事でアイキャッチ画像をPhotonを介して出さなければならなくなったため作成。
通常、アイキャッチ画像を出す場合、get_the_post_thumbnail(get_the_ID())(タグ出し)やwp_get_attachment_url(get_post_thumbnail_id())(画像URL取得)で行うところだが、要件として出されたものが、縦横比不定の画像の正方形への整形。
MTでは同じような機能が標準で搭載されているから、当然Wordpressでも似たような機能はあるものなのだろう・・・と思っていたが・・・ああ、駄目でした。
とりあえず、Jetpackを導入してPhotonを設定。
いざテンプレートへ!
lb=ほにゃららのパラメータを追加!!
やたー!!これで解決したよー\(^o^)/
・・・しねえよ!!!
パラメータ付けただけじゃ動かない。
get_the_post_thumbnail(get_the_ID())やwp_get_attachment_url(get_post_thumbnail_id())は生の画像URLを取ってくるので、いくらパラメータ付けたところで無駄無駄。
「http://i1.wp.com/」を介して一度変換してやる必要がある。
そこで以下のコードを作成した。
/*****************************************************************/ /* func名:getThumbnailUrl() */ /* 目的:アイキャッチ画像URL取得 JetpackPhotonに対応可 */ /* 引数:第1引数...画像ID nullで記事に設定されたアイキャッチ */ /* 第2引数...JetpackPhotonの使用有無 trueで使用する */ /* 第3引数...横サイズ JetpackPhotonの使用時 */ /* 第4引数...縦サイズ JetpackPhotonの使用時 */ /* 返値:アイキャッチ画像のフルパス */ /* */ /*****************************************************************/ function getThumbnailUrl($bid = null, $flg = false, $w = 500 , $h = 500){ $ret = ''; $src = ''; $url = ''; if($bid != null){ $src = $bid; }else{ $src = get_post_thumbnail_id(); } if($flg){ $src = wp_get_attachment_url($src); if($src != ''){ $src = substr($src, strlen(get_site_url(null, '/'))); $url = get_site_url(null, '/'); $url = substr($url, strpos($url, '://') + 3); $url = 'http://i1.wp.com/'.$url.$src.'?lb='.$w.','.$h; } $ret = $url; }else{ $src = wp_get_attachment_url($src); $ret = $src; } return $ret; }
引数は上記に書いてあるとおり。
第1引数で画像IDまたは投稿画像IDを指定。
第2引数のBool値で、Jetpack Photonを介したURLを出力するかを指定。
で、第3・第4引数でサイズ指定。
出し方例:
echo getThumbnailUrl(null, true, 360, 360);
とりあえず、上記で無事、Photonを介したURLを取得できました。
(普通にアイキャッチ画像を得る場合にも備えて、一応第1引数でwp_get_attachment_url()を呼び出すようにしているが、一行だけで済むテンプレート関数を独自関数に更に組み込む意味は果たしてあるのかどうか・・・微妙。)