【WordPress】Lazy Blocksの画像出力時にサムネイルサイズ設定をする

Lazy Blocksを使って画像を入出力する場合、標準的な出力コードはこのようになります。

<img src="{{control_name.url}}" alt="{{control_name.alt}}">

この出力だと、Wordpressで自動生成したサムネイル画像を呼び出せません。

元画像しか出せないのは何かと不自由なので、自分で出力用のコード(custom Handlebars helpers)を作成してみました。

 

functions.php

// Lazy Blocks用のオリジナルhandlebars_helper
function my_custom_lazyblock_handlebars_helper ( $handlebars )
{
//  {{{imgsize hoge 'custom-size'}}}
    $handlebars->registerHelper('imgsize', function ($img, $size) {
        $img=shortcode_atts(array('id'=>''),$img);//Warning: Illegal string offsetを防ぐ
        $imgdata = wp_get_attachment_image($img['id'], $size);
        return $imgdata;
    });
}
add_action( 'lzb_handlebars_object', 'my_custom_lazyblock_handlebars_helper' );

 

Lazy Blocksの管理画面上で入力するソースコード

{{{imgsize image 'medium'}}}

★{{}}のかっこを3重の{{{}}}にしないと、htmlがエスケープされてしまいimgタグとして機能しないので注意!

 

参考:

https://github.com/nk-o/lazy-blocks/issues/68

ショートコードでWarning: Illegal string offsetエラーが出る時の解決策【ワードプレス】