srcset이없는 the_post_thumbnail?


12

WordPress 4.4는 기능 을 srcset사용할 때 여러 이미지 크기를 추가 the_post_thumbnail합니다. srcset없이 하나의 이미지 크기 만 얻을 수 있습니까?

srcset모든 이미지에서 사용하지 않도록 필터를 추가 할 수 있지만 srcset특정 축소판 크기를 호출 할 때만 (예를 들어 전체 이미지 크기를 호출 할 때만) 사용하지 않으려 고합니다 .

답변:


13

특정 축소판 크기를 호출 할 때만 (예를 들어 전체 이미지 크기를 호출 할 때만) srcset을 비활성화하고 싶습니다.

다음은 두 가지 아이디어입니다 (잘 이해하면).

접근법 # 1

post_thumbnail_size필터 에서 크기를 확인합시다 . 해당 크기 (예 :)와 일치 하면 필터 와 함께 비어 full있는지 확인합니다 . 그렇게하면 함수 에서 초기에 구제 할 수 있습니다 ( 또는 필터를 사용하여 비활성화하기 전에 )$image_metawp_calculate_image_srcset_metawp_calculate_image_srcset()max_srcset_image_widthwp_calculate_image_srcset

/**
 * Remove the srcset attribute from post thumbnails 
 * that are called with the 'full' size string: the_post_thumbnail( 'full' )
 *
 * @link http://wordpress.stackexchange.com/a/214071/26350
 */
 add_filter( 'post_thumbnail_size', function( $size )
 {
     if( is_string( $size ) && 'full' === $size )
         add_filter( 
             'wp_calculate_image_srcset_meta',  
              '__return_null_and_remove_current_filter' 
         );   
    return $size;
 } );

// Would be handy, in this example, to have this as a core function ;-)
function __return_null_and_remove_current_filter ( $var )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return null;
}

우리가 가지고 있다면 :

the_post_thumbnail( 'full' );

생성 된 <img>태그는 srcset속성을 포함하지 않습니다 .

이 경우 :

the_post_thumbnail();

'post-thumbnail'크기 문자열을 일치시킬 수 있습니다.

접근법 # 2

다음을 사용하여 수동으로 필터를 추가 / 제거 할 수도 있습니다.

// Add a filter to remove srcset attribute from generated <img> tag
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );

// Display post thumbnail
the_post_thumbnail();

// Remove that filter again
remove_filter( 'wp_calculate_image_srcset_meta', '__return_null' );

wp_calculate_image_srcset_meta함수가 끝나면 필터를 제거해야 할 수도 있습니다
Mark Kaplun

필터 콜백을 수동으로 추가 / 제거하는 접근 방식을 추가했습니다. 다른 접근법에서 인스턴스 계산을 사용하여 각 the_post_thumbnail () 호출에 대해 한 번만 실행합니다. @MarkKaplun
birgire

코드 스 니펫을 단순화했습니다. 다시 생각하게 해주셔서 감사합니다 ;-) @MarkKaplun
birgire

1
:) 방금 필터에서 익명 함수에 대한 싫어함을 보여주는 생산적인 방법을 찾았습니다. :
Mark Kaplun

1
또는 "한 번만 실행"매개 변수가 있어야 add_filter합니다. 이 패턴은 실제로 일반적입니다.
Mark Kaplun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.