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()を呼び出すようにしているが、一行だけで済むテンプレート関数を独自関数に更に組み込む意味は果たしてあるのかどうか・・・微妙。)
