Por que wp_get_attachment_image_src está retornando dimensões erradas?

Estou usando wp_get_attachment_image_src para construir o atributo srcset de uma tag img . Nesse atributo, eu quero exibir uma lista separada por vírgulas de URLs de imagem juntamente com a largura da imagem.

Usando a página Configurações de mídia , eu configurei os tamanhos de imagem para serem os seguintes:

  • Tamanho da miniatura: 150×150
  • Tamanho médio: 640×480
  • Tamanho grande: 1024×768
  • Tamanho pequeno: 278×320

A function wp_get_attachment_image_src retorna os URLs corretos e as larguras corretas para os tamanhos de imagem full , medium e small . small é um tamanho personalizado que adicionei usando add_image_size .

Se eu chamar wp_get_attachment_image_src( $image_id, 'large' ) , a matriz retornada parece assim:

 array ( 0 => 'http://localhost/wp-content/uploads/2014/10/image-1024x768.jpg', 1 => 640, 2 => 480, 3 => true, ) 

Verificando a imagem que pode ser encontrada naquele url aparece a imagem com as dimensões corretas.

Atualmente, estou usando a function php builtin getimagesize para contornar esse problema, mas esta chamada de function demora significativamente mais do que simplesmente acessar o índice retornado por wp_get_attachment_image_src :

Sem getimagesize (mtime antes e depois da execução):

  • ‘0.83761000 1415195440’
  • ‘0.83831600 1415195440’

Com getimagesize:

  • ‘0.34808000 1415195635’
  • ‘0.35323900 1415195635’

O que posso fazer para fazer wp_get_attachment_image_src retornar as dimensões corretas?

Solutions Collecting From Web of "Por que wp_get_attachment_image_src está retornando dimensões erradas?"

Encontrei o mesmo problema aqui e a solução a partir daí funciona.

A solução é tão simples como colar isso:

 $content_width = 2000;// Value higher than your new 'large' width 

em functions.php

Explicação copiada a partir daí (usuário Chip Bennett):

Eu acredito que seu problema é que o valor definido para a variável $ $ content_width global (que é 640px em Boilerplate e 584px em Twenty Eleven) é menor que a largura que você está especificando através de Configurações -> Mídia.

O WordPress substitui a configuração do usuário pelo valor específico do tema. Isso realmente faz sentido, uma vez que um Tema conhece a sua largura máxima de conteúdo, e usar uma largura de imagem maior do que o que o Tema foi projetado para acomodar, provavelmente, quebrará o layout do Tema.

Verifique o link acima para se referir à sua resposta completa.


Este é um link para o projeto de tema underscolors, onde eles definem esse valor.