Como faço para desativar imagens responsivas no WP 4.4?

38

Eu converti com sucesso minha instalação do 4.3.1 para todos os https. Depois de atualizar para o 4.4. Eu tenho um problema com o novo atributo srcset . Enquanto o atributo src para imagens é definido usando https, o atributo srcset é http. Isso faz com que os navegadores não exibam nenhuma imagem.

Enquanto aguarda uma correção melhor, desejo desativar a configuração do atributo srcset para que todas as imagens tenham apenas um atributo src . Como eu faço isso?

    
por brokkr 10.12.2015 / 11:15

5 respostas

43

Aqui estão algumas coisas que você pode tentar remover o suporte à imagem responsiva em 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' );

mas como mencionado por @cybmeta, o problema pode estar em outro lugar.

Forçar https em srcset

Você pode fazer algumas depurações com o filtro wp_calculate_image_srcset e até tentar isso correção rápida :

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

para definir o esquema de url para https . Outra abordagem seria tê-lo sem desfazer // .

Confira o Codex para outras opções set_url_scheme() :

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

Mas você deve tentar se aprofundar e encontrar a causa raiz.

Atualização:

Poderíamos resgatar mais cedo da função wp_calculate_image_srcset() com:

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

usando os filtros wp_calculate_image_srcset ou max_srcset_image_width .

Também atualizado de acordo com o ticket # 41895 , para retornar uma matriz vazia em vez de false / null.

    
por birgire 10.12.2015 / 11:59
12

A maneira mais simples e mais limpa de fazer isso é simplesmente isso:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

Para repetir o que a maioria das outras pessoas estão dizendo, srcset é uma boa ideia e é o futuro (melhor prática agora), mas se você precisar de uma solução rápida para manter seu site funcionando, o snippet acima faz o trabalho sem qualquer invasão .

fonte: WP Blog principal

    
por Trevor 16.12.2015 / 02:17
7

Provavelmente, a razão pela qual os URLs nos atributos srcset estão mostrando incorretamente o HTTPS é porque os URLs de todas as imagens são criados usando o valor da opção siteurl na sua tabela wp_options. Se você estiver veiculando seu front end via HTTPS, altere também esses valores (por meio de Configurações gerais).

Aqui está o chamado relacionado no sistema de controle de problemas do WordPress: enlace

    
por joemcgill 10.12.2015 / 17:13
5

Isso desativará o código srcset, eliminando quaisquer imagens maiores que 1 pixel.

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

A longo prazo, você deve tentar corrigir o problema real. Ainda assim, isso funciona se você precisar de uma solução rápida.

    
por Otto 11.12.2015 / 01:41
2

Em Configurações / Geral, verifique se o endereço do WordPress (URL) e o endereço do site (URL) estão definidos como enlace

Veja enlace

  

Joe McGill, que ajudou a liderar o esforço para obter imagens responsivas   WordPress, também respondeu no tópico do fórum e confirma o Cree   sugestão está correta, "Se você está executando HTTPS no front-end, você   deve alterar os URLs da URL da sua casa e do seu site em Configurações >   Geral, então eles usam o esquema HTTPS ”, disse ele.

    
por user2969141 16.12.2015 / 16:18