Categorías
Tecnologia

A vueltas con Image Caption Easy

Image Caption Easy es un excelente plugin para WordPress que tiene unos cuantos fallos muy grandes. Parece ser que el autor no saca nuevas versiones del plugin porque considera que el caption embebido en WP 2.6+ es suficiente. Sin embargo, esa feature no permite enviar imágenes con texto al pie desde BlogDesk que es para lo que yo uso este plugin. Por eso y tras detectarle diversos fallos, he tenido que meterle mano.

El problema más destacable es que si añades una imagen desde la web de publicación de WordPress el alineado se pierde y desde WP 2.6.0 además aparece duplicado el texto. Ya tuve que solucionar un problema de Image Caption Easy con los feeds. Pero esta vez el problema es más grave.

Básicamente lo primero que hay que hacer si tienes un WP 2.6.0 o superior y quieres publicar tanto desde el interfaz web como desde BlogDesk u otro gestor de Desktop es eliminar el caption que mete WP por defecto. Para ello hay 2 formas: en WP 2.6 cambiar una opción de wp-config.php y en versiones superiores tienes que instalar un plugin. Por cierto, cuidado que no es retroactivo: cuando escribas nuevos posts no tendrán caption, pero los viejos lo mantendrán.

Una vez eliminado el horrible caption que introduce WordPress por defecto, encontrarás otro problema. Si publicas desde el interfaz web las imágenes no se van a alinear. El problema es un bug en el plugin del Image Caption Easy combinado con una idea un tanto arcaica de entender el HTML: el plugin espera que la imagen tenga un tag align=»xxx». Como WP usa estilos, el estilo que le da a la imágen es class=»alignleft» o class=»alignright». El plugin no está preparado para lidiar con estos tags y termina haciéndose la picha un lío. El patch para evitar este problema es el siguiente:

69,81c69
<                               $class = ice_extractimageattribute($img_meta, "class");
<                               if ($class != false) {
<                                       $posL = strpos($class, "alignleft");
<                                       $posR = strpos($class, "alignright");
<                                       if ($posL === false && $posR === false)
<                                               $align = "nowrap";
<                                       else if ($posL === false)
<                                               $align = "right";
<                                       else
<                                               $align = "left";
<                               } else {
<                                       $align = "nowrap"; //set so can be no wrap and centerted.
<                               }
---
>                               $align = "nowrap"; //set so can be no wrap and centerted.
135c123
<       $posL = strpos($image_text, $attribute_tag . "=");
---
>       $posL = strpos($image_text, $attribute_tag);
206c194
< ?>
---
> ?>
\ No newline at end of file

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *