La configuración en 'Configuración de medios' se ignora al insertar imágenes

4

Cuando subo una imagen, se cambia automáticamente de tamaño como lo esperaría, sin embargo, los tamaños para insertar la imagen parecen ignorar las configuraciones que he colocado en Configuración / Medios.

En mi configuración de medios tengo:

  • Miniatura: 150 x 150
  • Medio: 300 x 300
  • Grande: 690 x 9999

Subo una imagen de: 2226 x 1663 .
Wordpress genera los tamaños de imagen correctos, pero me da las siguientes opciones de inserción:

  • Miniatura: 150 x 150 (como se esperaba)
  • Medio: 300 x 224 (como se esperaba)
  • Grande: 640 x 447 (Incorrecto. ¿Por qué?)

Busqué en los foros y encontré una sugerencia de agregar lo siguiente a mi archivo functions.php:

update_option('large_size_w', 690);

Sin embargo, esto no funcionó.

    
pregunta Gary 05.04.2012 - 13:21

3 respuestas

6

Creo que su problema es que el valor establecido para la variable global $content_width (que es 640px en Boilerplate y 584px en Veinte Once) es menor que el ancho que estás especificando a través de Settings -> Media .

WordPress está anulando la configuración de usuario con el valor específico del tema. Esto realmente tiene sentido, ya que un tema conoce su ancho máximo de contenido, y usar un ancho de imagen mayor que el que está diseñado para adaptarse al tema probablemente rompa el diseño del tema.

La solución, entonces, si necesita cambiar el ancho de la imagen grande a 690px (y suponiendo que su Tema infantil puede acomodar este ancho), es definir $content_width en su Niño Tema functions.php archivo . Recomendaría usar una función de configuración de tema infantil, conectada a after_setup_theme() , así:

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

La prioridad 9 es probablemente una exageración, ya que las acciones de su Tema infantil se agregarán antes de las acciones del Tema principal de todos modos; pero el uso de la prioridad 9 garantizará que esta acción se dispare antes de que se active la configuración del tema principal, con la prioridad 10.

Dado que la acción de tu tema secundario se activa primero, el tema secundario define $content_width , y el tema principal no lo anula (ya que también usa un contenedor condicional if ( ! isset() ) ).

Editar

Por lo tanto, al mirar el archivo Twenty Eleven functions.php , me di cuenta de que asumí una suposición errónea: Twenty Eleven define $content_width en functions.php , en lugar de dentro de la función de configuración del tema, enlazada en after_setup_theme . Entonces, para anularlo, ** tienes que hacer lo mismo **.

Simplemente coloque lo siguiente en la parte superior de su archivo functions.php , antes de cualquier otra definición de función:

$content_width = 690;

Esto debería funcionar, ya que el Tema secundario functions.php se analiza antes que el Tema principal functions.php .

(Este es un excelente ejemplo de por qué los Temas deben envolver todas las cosas dentro de las devoluciones de llamada . :))

    
respondido por el Chip Bennett 05.04.2012 - 18:36
0

Si desea tener más control sobre qué tamaños de imagen se generan cuando sube imágenes, eche un vistazo a Simple Complemento de tamaños de imagen

    
respondido por el Scriptamateur 05.04.2012 - 15:46
0

Modifique su configuración en la página de medios para que su ancho de inserción máximo sea 690 en lugar de en blanco

    
respondido por el Tom J Nowell 05.04.2012 - 16:11

Lea otras preguntas en las etiquetas