Solucionar problemas con CDN y Aqua Resizer

WP Rocket v2.5.5

En la v 2.5.5 de WP Rocket hemos arreglado un problema con las imágenes que no se añadían al CDN cuando tu tema o algún plugin estaba usando el script Aqua Resizer. 

Sin embargo, si estás usando una versión precedente de WP Rocket, lee las instrucciones aquí abajo para saber como solucionar el problema. Si necesitas ayuda, siempre puedes abrir un ticket de soporte y te ayudaremos.

Instrucciones para versiones de WP Rocket desde v2.3.8 hasta v2.5.4 incluida

Si tu tema o un plugin está usando lo script Aqua Resizer que sirve a modificar el tamaño de las imágenes, podría pasar que estas no sean servidas desde tu CDN. Puedes verificar la presencia de la función en el código de tu tema: 

aq_resize();

Para arreglar el asunto, puedes añadir el siguiente código al fichero functions.php de tu tema o inserirlo en un MU plugin

add_action( 'init', '__rocket_cdn_on_aqua_resizer_238' );
function __rocket_cdn_on_aqua_resizer_238() {
	if( function_exists( 'aq_resize' ) ) {
		remove_filter( 'wp_get_attachment_url' , 'rocket_cdn_file', PHP_INT_MAX );
		add_filter( 'rocket_lazyload_html', '__rocket_cdn_on_data_lazy_src_attr_238' );
	}
}
function __rocket_cdn_on_data_lazy_src_attr_238( $html ) {
	if( preg_match( '/data-lazy-src=[\'"]?([^\'"\s>]+)[\'"]/i', $html, $matches ) ) {
		$html = str_replace( $matches[1], get_rocket_cdn_url( $matches[1], array( 'all', 'images' ) ), $html );
	}
	return $html;
}

Instrucciones para v2.3.7 y antecedentes

En este caso tendrás que modificar el código de tu tema como descrito aquí abajo, así nuestro filtro podrá ser aplicado.

El código original se verá de manera parecida a lo que sigue:

<?php
$thumb 	 = get_post_thumbnail_id(); 
$img_url   = wp_get_attachment_url( $thumb,'full'); // Get img URL
$image 	 = aq_resize( $img_url, $w, $h, true );   // Resize & Crop img 
?>
<img src="<?php echo $image ?>" />

Reemplaza el código original de arriva con este aquí abajo, de manera que las imágenes tratadas con Aqua Resizer sean servidas desde tu CDN:

<?php
$thumb = get_post_thumbnail_id(); 
// Remove WP Rocket CDN which cause conflict
remove_filter( 'wp_get_attachment_url' , 'rocket_cdn_file', PHP_INT_MAX );
$img_url = wp_get_attachment_url( $thumb,'full'); // Get img URL
$image 	 = aq_resize( $img_url, $w, $h, true );   // Resize & Crop img 
// Add WP Rocket CDN
add_filter( 'wp_get_attachment_url', 'rocket_cdn_file', PHP_INT_MAX );
$image = get_rocket_cdn_url( $image );
?>
<img src="<?php echo $image ?>" />