WP 4.4에서 반응 형 이미지를 비활성화하려면 어떻게합니까?


37

4.3.1 설치를 모든 https로 성공적으로 변환했습니다. 4.4로 업데이트 한 후 새로운 srcset속성에 문제가 있습니다. src이미지 srcset속성은 https를 사용하여 설정 되지만 속성은 http입니다. 이로 인해 브라우저가 이미지를 전혀 표시하지 않습니다.

더 나은 수정을 기다리는 동안 srcset모든 이미지에만 속성이 있도록 속성 설정을 비활성화하고 싶습니다 src. 어떻게합니까?


2
나는 또한 이것을 알고 싶다-방금 우리 웹 사이트를 엉망으로 만들었습니다!
Chris

나는 성공하지 못한 채 다양한 방법을 시도했지만 새로운 질문에 주된 질문을 공개하고 싶었습니다. 내가 시도한 것 중 가장 과감한 것은 내가 책임이 있다고 생각한 add_filter줄을 언급하는 것이었다 default-filters.php.//add_filter( 'the_content', 'wp_make_content_images_responsive' );
brokkr

1
반응 형 이미지를 비활성화하는 대신 반응 형 이미지 기능이 문제의 원인이 아니기 때문에 HTTP와 HTTPS가 혼합 된 것을 찾아야합니다. 내 모든 웹 사이트가 HTTPS 아래에 srcset있으며 WordPress에서 올바르게 생성됩니다. HTTP에서 HTTPS로 어떻게 마이그레이션 했습니까?
cybmeta


꽤 잘 지워진 것 같습니다. 이중 게시에 대한 사과-근본 문제 (srcset은 https를 사용해야 함)도 wordpress.org ( wordpress.org/support/topic/… ) 에서 시작한 스레드에서 해결되었습니다. 그것이 부활했을 때. 저기서 그것을 해결 한 joemcgill에게 감사드립니다.
brokkr

답변:


43

4.4에서 반응 형 이미지 지원을 제거 할 수있는 몇 가지 사항은 다음과 같습니다.

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( 'wp_get_attachment_image_attributes', function( $attr )
{
    if( isset( $attr['sizes'] ) )
        unset( $attr['sizes'] );

    if( isset( $attr['srcset'] ) )
        unset( $attr['srcset'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( 'wp_calculate_image_sizes', '__return_empty_array',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( 'wp_calculate_image_srcset', '__return_empty_array', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( 'the_content', 'wp_make_content_images_responsive' );

그러나 @cybmeta가 언급했듯이 문제는 다른 곳에있을 수 있습니다.

에 https 강제 srcset

wp_calculate_image_srcset필터를 사용하여 디버깅을 수행 하고이 빠른 수정을 시도 할 수도 있습니다 .

add_filter( 'wp_calculate_image_srcset', function( $sources )
{
    foreach( $sources as &$source )
    {
        if( isset( $source['url'] ) )
            $source['url'] = set_url_scheme( $source['url'], 'https' );
    }
    return $sources;

}, PHP_INT_MAX );

URL 체계 를 로 설정합니다 https. 또 다른 방법은 체계가없는 것입니다 //.

다른 set_url_scheme()옵션 은 Codex를 확인하십시오 .

$source['url'] = set_url_scheme( $source['url'], null );        
$source['url'] = set_url_scheme( $source['url'], 'relative' );

그러나 더 깊이 파고 근본 원인을 찾으려고 노력해야합니다.

최신 정보:

우리는 wp_calculate_image_srcset()다음과 같이 함수 에서 일찍 구제 할 수 있습니다.

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

그런 다음 wp_calculate_image_srcset또는 max_srcset_image_width필터 를 사용합니다 .

또한 티켓 # 41895 에 따라 false / null 대신 빈 배열을 반환하도록 업데이트되었습니다 .


두 가지 접근 방식이 각각 의도 한대로 작동했는지 확인하기 위해 srcset 비활성화는 srcset을 제거하고 (고정 된 이미지를 다시 가져 왔습니다) https 강제로 srcset URL을 https로 변경했습니다. 두 방법 모두 혼합 컨텐츠 경고를 제거했습니다.
brokkr

4
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );솔루션은 저에게 효과적이었습니다. 감사합니다!
Tim Bowen

도움이되었다 니 다행입니다.
birgire

유효성 검사기에서 경고가 발생합니다. "srcset 특성이있는 경우에만 size 특성을 지정할 수 있습니다."
Michael Rogers

크기 속성이 아닌 srcset을 필터링 한 것처럼 들립니다. @MichaelRogers
birgire

13

가장 간단하고 깨끗한 방법은 다음과 같습니다.

add_filter( 'wp_calculate_image_srcset', '__return_false' );

대부분의 다른 사람들이 말하는 것을 에코하기 위해 srcset은 좋은 생각이며 미래입니다 (지금은 모범 사례). 그러나 사이트를 계속 작동시키기 위해 빠른 수정이 필요한 경우 위의 스 니펫은 해킹없이 작업을 수행합니다.

출처 : WP Core Blog


5
__return_false대신 disable_srcsetwp를 사용 하면 wp와 같은 간단한 작업을위한 기능이 있습니다.
Jake

3
그리고 둘 다 거짓을 반환하기 위해 완전히 새로운 기능을 만들지 않으면 서 코드를 향상시킬 수 있습니다. 워드 프레스는이를위한 기능을 제공합니다. codex.wordpress.org/Function_Reference/_return_false
Jake

1
이것이 올바른 해결책입니다. 이 기능은 wp_autop와 마찬가지로 잘 알려져 있습니다. <picture>를 사용하여 반응 형 이미지뿐만 아니라 아트 디렉션을 얻습니다.
피터 우스터

1
@Jake는 1에서 10까지의 비율로 "false를 반환하기 위해 새 함수를 작성"하면 WordPress에 약 -2 팽창이 추가됩니다. WP 개발자뿐만 아니라 누구나 이해할 수있는 자체 문서화 코드는 특정 가치가 있습니다.
Mahmoud Al-Qudsi

1
@ MahmoudAl-Qudsi '__return_false'가 너무 혼란 스럽기 때문에? WordPress 포럼에서이 토론은 WordPress 기능을 해제하는 것에 관한 것입니다. 기본적으로 매우 기본적이고 잘 문서화 된 WordPress 반환 기능을 WordPress에 기본 제공하여 사용하는 것은 그리 놀라운 일이 아닙니다. 함수의 이름이 "return_false"라는 사실은 자체 문서화입니다. 그것이 무엇을 시도하고 추측합니까?
Jake

7

대부분 srcset속성 의 URL이 HTTPS를 잘못 표시 하는 이유는 모든 이미지의 URL이 wp_options 테이블의 siteurl 옵션 값을 사용하여 작성 되었기 때문입니다. HTTPS를 통해 프런트 엔드를 제공하는 경우 설정> 일반을 통해 해당 값도 변경해야합니다.

다음은 WordPress 문제 추적 시스템 관련 티켓입니다. https://core.trac.wordpress.org/ticket/34945


5

1 픽셀보다 큰 이미지를 제거하여 srcset 코드를 비활성화합니다.

add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );

장기적으로 실제 문제를 해결하려고 노력해야합니다. 그래도 빠른 수정이 필요한 경우 작동합니다.



1
create_function ()은 어떻습니까? 내 답변이 PHP 5.2에서도 작동하는 것을 좋아합니다.
Otto

2

설정 / 일반에서 WordPress 주소 (URL) 및 사이트 주소 (URL)가 https://yourdomain.com 으로 설정되어 있는지 확인하십시오.

http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl을 참조 하십시오

반응 형 이미지를 WordPress로 가져 오는 데 도움을 준 Joe McGill은 포럼 스레드에서도 응답했으며 Cree의 제안이 올바른지 확인합니다.“프론트 엔드에서 HTTPS를 실행중인 경우 집과 사이트의 URL을 변경해야합니다 설정> 일반의 URL을 통해 HTTPS 구성표를 사용하도록합니다.”라고 말했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.