ワードプレスは、サムネイルがない場合は完全なサイズの画像を返します。その後の2000ピクセル建ての画像をHTMLから100pxで表示する悲劇的な事態が起る。画像サムネイルリストであれば、あるページから30MBをダウンロードすることになるかもしれない。

だから、そのような事態を防止するためには、HTML形式で見せてくれるサイズにぴったりのサムネイルをサーバーで生成された後、URLを返しなければならない。それをしてくれる機能だ。引数の値は、添付ファイルの$post_id(ワードプレスでは、添付ファイルの情報もpostテーブルに保存されます。)、必要な幅と高さだ。

function mytory_get_thumb_src($attachment_id, $width, $height){
    $filepath = get_attached_file($attachment_id);
    $upload_path = wp_upload_dir();
    $basedir = $upload_path['basedir'];

    // filepathは$ basedirまで含まれている場合があります。
    $filepath = str_replace($basedir, '', $filepath);
    $fullpath = $basedir . $filepath;
    if( ! is_file($fullpath)){
        return FALSE;
    }
    $pathinfo = pathinfo($fullpath);
    $new_fullpath = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . "-{$width}x{$height}" . '.' . $pathinfo['extension'];
    if( ! is_file($new_fullpath)){
        $image = wp_get_image_editor($fullpath);
        if ( ! is_wp_error( $image ) ) {
            $image->resize( $width, $height, false );
            $image->save( $new_fullpath );
        }
    }
    $new_filepath = str_replace($basedir, '', $new_fullpath);
    return $upload_path['baseurl'] . $new_filepath;
}

また、ワードプレスのイメージを持って作業するときは、$image = wp_get_image_editor($fullpath)で始まるをする。この関数は、WP_Image_Editorクラスを返しますが、このクラスは、画像を非常に簡単に編集できるようにAPIが非常によく整理されてています。

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。