¿Cuál es una buena alternativa a usar $ content_width para la optimización de la imagen?

14

El $content_width GLOBAL en WordPress afecta muchos temas e incluso algunos complementos al limitar el tamaño de las imágenes e incrustaciones en las publicaciones, es un requisito para los temas enviados a wordpress.org.

Se establece mediante:

$content_width = 584; // Twenty Twelve example

Si inserta una imagen grande (por defecto 1024x1024) en una publicación, se obtiene:

src="../wp-content/uploads/2013/02/IMG_1390-1024x682.jpg" width="584" height="328"

Si, en cambio, elimina esta configuración global e inserta el tamaño de imagen real, establezca con add_image_size que da como resultado:

src="../wp-content/uploads/2013/02/IMG_13901-584x328.jpg" width="584" height="328" 

Eliminar imágenes globales e insertar imágenes grandes, que es muy común , a menudo produce un ahorro de más de 2x, en páginas con varias imágenes que veo cientos de KB guardadas en la carga de la página.

¿Usar add_image_size y eliminar la capacidad de insertar imágenes a tamaño completo no es una mejor opción?

ps. Escribí sobre aquí con datos más precisos

    
pregunta Wyck 14.02.2013 - 20:54

2 respuestas

7

Tenga en cuenta que $content_width global no solo se usa para imágenes, sino también para objetos incrustados, como el video. Por lo tanto, cualquier solución no será simplemente un caso de uso o soporte de $content_width .

Por lo general, un tema restringirá las imágenes del área de contenido de varias maneras:

  1. Grande Tamaño de imagen: definiendo $content_width algo apropiado para el diseño del tema
  2. Original / completo Tamaño de la imagen: definir una regla CSS para #content img { max-width: XXX; height: auto; } para garantizar que las imágenes de tamaño completo que se insertan no rompan el diseño
  3. Miniatura Tamaño de imagen: llame a set_post_thumbnail_size() para definir la Imagen destacada / Publicación en miniatura de miniaturas predeterminada thumbnail tamaño. (Nota: no recomiendo personalmente usar este método. Defina tamaños de imagen personalizados específicos para una ubicación determinada para una imagen destacada y luego llame ese tamaño personalizado en la ubicación de la plantilla específica, a través de the_post_thumbnail( $size ) .)

Como ha descubierto, debido a la forma en que WordPress selecciona con un tamaño de imagen intermedio para usar en cualquier solicitud de imagen dada, esa solicitud podría resultar en una imagen con escala del navegador.

Valores definidos por el tema para imágenes grandes

Una opción sería redefinir la configuración para dimensiones de imagen grandes . (Proceda con precaución. Esto está bien para su propio sitio, pero un tema distribuido públicamente que interfiere con los ajustes de configuración del usuario es ... área gris en el mejor de los casos).

La configuración de la dimensión de la imagen grande se almacena como:

$large_image_width = get_option( 'large_size_w' );
$large_image_height = get_option( 'large_size_h' );

Por lo tanto, podría establecer esos valores de acuerdo con su valor $content_width :

global $content_width;
update_option( 'large_size_w', $content_width );
update_option( 'large_size_h', $content_width );

(Por supuesto, querría poner un poco de seguridad / comprobación de errores alrededor de esto, según corresponda.)

Eliminar opción para insertar imágenes a tamaño completo

Si simplemente quiere evitar que los usuarios inserten imágenes a tamaño completo (nuevamente: proceda con precaución; esto puede ser territorio de Plugin), puede filtrar 'image_size_names_choose' :

function wpse86950_filter_image_size_names_choose( $possible_sizes ) {
    unset( $possible_sizes['full'] );
    return $possible_sizes;
}
add_filter( 'image_size_names_choose', 'wpse86950_filter_image_size_names_choose' );

Nuevamente: es posible que desee agregar algunos fallos sanos aquí, ya que este filtro se usa en más de un lugar.

Defina un tamaño de imagen personalizado para las imágenes de ancho de poste completo

En relación con la opción anterior, puede definir un tamaño de imagen 'full-post-width' :

global $content_width;
add_image_size( 'full-post-width', $content_width, $content_width, false );

Luego, agrégalo a la lista de opciones disponibles:

function wpse86950_filter_image_size_names_choose( $possible_sizes ) {
    // Unset full image size
    unset( $possible_sizes['full'] );
    // Add full-post-width image size
    $possible_sizes['full-post-width'] = 'Full Post Width';
    // Return array
    return $possible_sizes;
}
add_filter( 'image_size_names_choose', 'wpse86950_filter_image_size_names_choose' );
    
respondido por el Chip Bennett 20.02.2013 - 02:24
2

Sí, creo que sí. Para sortear el problema $content_width para los temas enviados al repositorio, uso los filtros de opción para forzar los tamaños que he elegido para el diseño.

add_filter( 'option_large_size_w', function( $opt ) { return 1024; } );
add_filter( 'option_large_size_h', function( $opt ) { return 0; } );
add_filter( 'option_embed_size_w', function( $opt ) { return 1024; } );
add_filter( 'option_embed_size_h', function( $opt ) { return 0; } );
// ...etc...
    
respondido por el sanchothefat 23.02.2013 - 18:07

Lea otras preguntas en las etiquetas