생성 된 썸네일에 대한 사용자 정의 이름 설정 설정하는 데 사용할 수있는 필터가 있습니까? 이

자동 생성 된 썸네일의 명명 규칙을 설정하는 데 사용할 수있는 필터가 있습니까?

이 같은:

  • thumbnail_150x150.jpg-> 썸네일 -s.jpg
  • thumbnail_300x300.jpg-> 썸네일 -m.jpg
  • thumbnail_600x600.jpg-> 썸네일 -l.jpg


답변

대답이 아니오 인 것 같습니다

핵심 기능을 따라 막 다른 골목을 찾았습니다. 그리고 Rarst가 말하는 이 게시물 ( top에서 add_image_size ()을 어떻게 만들 수 있습니까? )을 찾았습니다 .

중간 이미지 생성은 매우 견고합니다. 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가치 $suffix하는 switch우리의 새로운 접미어
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 );

여기 , 참조 용으로 개조 한 전체 코드의 사본.
그리고 원본 에서 diff .

아마도 모든 코드가 베어 본으로 축소 될 수 있지만이 방법으로 사용자 정의 자른 이미지의 이점을 얻을 수 있습니다 :))


답변

image_make_intermediate_size 필터를 사용할 수 있지만 $ 파일 이름에 따라 중간 파일을 변경하려는 이름을 파악해야합니다 (이 시점에서 파일이 이미 생성되었으므로 파일 이름을 바꿉니다).

“썸네일”에 대한 중간 크기 이미지 만 생성하므로 다음과 같이 간단합니다.

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;
} );