Manul Tech

WordPressでサムネイルサイズを追加する方法

WordPressはよく利用するけれど、たまにしか使わないサムネイルサイズの追加方法をよく忘れる。特にカスタム投稿で利用する場合。記事にしながら覚えるようにしたい。(でもきっとまた忘れる)

サムネイルサイズにバリエーションは欲しいけど、アイキャッチは別にいらない

そもそも「アイキャッチ」機能って別にいらないよね、と思ってる。慣れていないユーザ(クライアントとか)は「メディアを追加」とか「アイキャッチを追加」だとか、混乱しそう。
試してみたところ、サムネイルサイズを増やすには

add_theme_support('post-thumbnails', array('<カスタム投稿名>'));

が必要だと勝手に思ってたんだけど、いらないみたい。
add_image_size」で好きなだけ追加していく。

add_image_size('<サイズ名>', <横幅>, <高さ>, <切り抜くかどうか>);

ex)
add_image_size('img312x150', 312, 150, true);

<横幅>と<高さ>は最大サイズだから

add_image_size('img_w300', 300, 9999);

とかにすれば、横幅300pxで高さ成り行きってことにできる。
まぁ、使わないけど。

生成したサムネイルサイズの表示方法

生成したサムネイルの表示方法はいくつかあると思うけど、個人的に利用しているのはこの方法。

function get_custom_thumbnail($size_name = 'thumbnail', $post_id = null, $image_num = 0){
    $post_id = $post_id ? $post_id : get_the_ID();
    if(isset($post_id)){
        $image = get_children(array('post_parent' => $post_id, 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC'));
        if(is_array($image)){
            $image = array_merge($image);
            $thumb = wp_get_attachment_image_src($image[$image_num]->ID, $size_name);

            return $thumb[0];
        }
    }

    return false;
}

$image_numはアップしたメディアファイルの何番目のものを表示するかを指定する。
get_childrenで取得できるメディア情報の配列の添字番号は、そのメディアファイルの投稿IDになっているから、array_mergeでゼロからの通し番号に変えてる。
(もうちょっとスマートな方法があるような気もしないでもない)

wp_get_attachment_image_srcで取得したサムネイル情報の配列の添字「1」以降はサイズ情報などが入っているけど、まず使わないから「0」に入っているサムネイル画像URLのみを返している。

コメント1

  1. Bunny

    You're a real deep thnriek. Thanks for sharing.