As configurações em 'Configurações de mídia' são ignoradas ao inserir imagens

4

Quando eu carrego uma imagem, ela é redimensionada automaticamente como eu esperava, mas os tamanhos para inserir a imagem parecem ignorar as configurações que eu coloquei em Configurações / Mídia.

Nas minhas configurações de mídia, tenho:

  • Miniatura: 150 x 150
  • Médio: 300 x 300
  • Grande: 690 x 9999

Eu carrego uma imagem de: 2226 x 1663 .
O Wordpress gera os tamanhos corretos das imagens, mas fornece as seguintes opções para inserção:

  • Miniatura: 150 x 150 (como esperado)
  • Médio: 300 x 224 (como esperado)
  • Grande: 640 x 447 (Errado. Por quê?)

Eu olhei nos fóruns e encontrei uma sugestão de que eu adicionasse o seguinte ao meu arquivo functions.php:

update_option('large_size_w', 690);

No entanto, isso não funcionou.

    
por Gary 05.04.2012 / 13:21

3 respostas

6

Acredito que o seu problema é que o valor definido para a variável global $content_width (que é 640px no Boilerplate e 584px no Twenty Onze) é menor que a largura que você está especificando via Settings -> Media .

O WordPress está substituindo sua configuração de usuário pelo valor específico do tema. Isso realmente faz sentido, já que um tema sabe sua largura máxima de conteúdo, e usar uma largura de imagem maior do que o que o tema foi projetado para acomodar muito provavelmente quebraria o layout do tema.

A solução, então, se você precisar alterar a largura da imagem grande para 690px (e supondo que seu tema filho possa acomodar essa largura), defina definir $content_width em seu filho Tema functions.php file . Eu recomendaria usar uma função de configuração de tema infantil, conectada em after_setup_theme() , assim:

<?php
function wpse48075_theme_setup() {
    // Define $content_width global
    global $content_width;
    if ( ! isset( $content_width ) ) {
        $content_width = 690;
    }
}
add_action( 'after_setup_theme', 'wpse48075_theme_setup', 9 );
?>

A 9 prioridade é provavelmente um exagero, uma vez que as ações do seu tema filho serão adicionadas antes das ações do tema pai; mas usar a prioridade 9 garantirá que essa ação seja disparada antes que a configuração do tema pai seja acionada, com prioridade 10.

Como sua ação de tema filho é acionada primeiro, o tema filho define $content_width e o tema pai não a substitui (pois também usa um wrapper condicional if ( ! isset() ) ).

Editar

Então, olhando para o arquivo Twent Eleven functions.php , percebi que fiz uma suposição errada: Twenty Eleven define $content_width em functions.php , em vez de dentro da função de configuração do tema, em after_setup_theme . Então, para anulá-lo, ** você tem que fazer o mesmo **.

Basta colocar o seguinte na parte superior do arquivo functions.php , antes de qualquer outra definição de função:

$content_width = 690;

Isso deve funcionar, pois o tema filho functions.php é analisado antes do tema pai functions.php .

(Este é um excelente exemplo do motivo pelo qual os Temas devem agrupar todas as coisas dentro dos callbacks . :))

    
por Chip Bennett 05.04.2012 / 18:36
0

Modifique suas configurações na página de mídia para que sua largura máxima de inserção seja 690 em vez de em branco

    
por Tom J Nowell 05.04.2012 / 16:11
0

Se você quiser mais controle sobre quais tamanhos de imagem são gerados ao fazer upload de imagens, dê uma olhada nos simples Plugin de tamanhos de imagem

    
por Scriptamateur 05.04.2012 / 15:46