生成されたサムネイルのカスタム名を設定する


9

自動生成されたサムネイルの命名規則を設定するために使用できるフィルターはありますか?

このようなもの:

  • thumbnail_150x150.jpg-> thumbnail-s.jpg
  • thumbnail_300x300.jpg-> thumbnail-m.jpg
  • thumbnail_600x600.jpg-> thumbnail-l.jpg

回答:


4

答えはノーだと思われる ...

私はコア機能を追跡し、行き止まりを見つけました。そして、(この記事を見つけた私は、上からadd_image_size()作物を作ることができますどのように?)どこRarstは言います:

中間画像の生成は非常に厳格です。Image_resize()はコードに近い状態を保ち、フックを完全に欠いています。

しかし、他の回答(bradtからの)と彼が公開したコード(WordPressのImage Crop Position)に続いて、私はそれを理解したと思います:)

関数bt_generate_attachment_metadataではbt_image_make_intermediate_size、最後のパラメーターを含めるように呼び出しを変更しました$size

$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );

また、関数の開始bt_image_make_intermediate_sizeを次のように変更しました。

  • $size関数にパラメーターを追加しました
  • 代わりに、デフォルトのnullに価値$suffixswitch私たちの新しいサフィックスへ
function bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
    if ( $width || $height ) {
        switch($size) {
            case 'thumbnail':
                $suffix = 't';
                break;
            case 'medium':
                $suffix = 'm';
                break;
            case 'large':
                $suffix = 'l';
                break;
            default:
                $suffix = null;
                break;
        }
        $resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );

ここでは、参考のために、私のmodを含む完全なコードのコピーを示します。
そして、オリジナルとの違い

多くの場合、すべてのコードは必要最低限​​にまで縮小できますが、この方法でカスタムのトリミングされた画像の利点を得ることができます:))


1
申し訳ありませんが、まだ旅行中です。すぐにテストしてお知らせします。ありがとう。
ショーンリー

この回答はまだ有効ですか?それは数年になったので、...
Athoxx

2

フィルターimage_make_intermediate_sizeを使用することもできますが、取得した$ filenameに従って、中間ファイルの名前を変更する必要があります(この時点ですでに生成されているため、ファイルの名前を変更します)。

「サムネイル」の中間サイズの画像のみを生成するので、次のように簡単です。

add_filter( 'image_make_intermediate_size', function( $filename ) {

    // old 2017_234783843-100x100.jpg
    $old = $filename;
    // new 2017_234783843-thumbnail.jpg
    $new = preg_replace("/(\d+_\d+)-\d+x\d+\.(.*)/i", "$1-thumbnail.$2", $old );

    rename($old, $new);

    return $new;
} );

1
正規表現はより具体的ではない可能性があります"/(.*)-\d+x\d+\.(.*)/i"
2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.