Contenido

WordPress (2.x) y ficheros subidos

26 may

+ 4

Hoy por casualidad he dado con un problema molesto, muy molesto, en WordPress 2.x, no he probado versiones anteriores. Se trata de un problema en el upload del sistema de posts, me he dado cuenta que posts antiguos con imagenes, estas han sido sobreescritas por imagenes más modernas, osea que imagenes que uso en posts como “La API de Digg ya ha empezado a dar sus frutos” que contienen imagenes y al ser más modernas han sobre escrito imagenes anteriores como en el posts “Microsoft Popfly, el pipes de Microsoft” o el de unZippy, y más que no me habré dado cuenta.

El problema es bastante chorra y generalmente no te das cuenta, a no ser que se cumpla una premisa.

  • El nombre de los ficheros que se suban no puede tener espacios.

Uno de los motivos por los que es dificil causar el error es que WordPress crea un sistema de directorios por mes y año para alojar los ficheros que subimos mediante la aplicación, por este motivo y sinó subimos muchas imagenes podemos nunca sufrir este desastre.

La función que comprueba el nombre del fichero en el directorio no aplica un filtro con el que convierte los espacios en guiones y por este motivo nunca encuentra el fichero.

Ejemplo:

Imaginemos que subimos el ficero “Soy Fichero.jpg”, este fichero al subirse sufre una transformación a “Soy-Fichero.jpg”, que es un nombre correcto para uso en web, si despues de unos días subimos un fichero con el mismo nombre “Soy Fichero.jpg” hará una comprobación y verá que no existe ya que no realiza el reemplazo a “Soy-Fichero.jpg” a la hora de comprobar el nombre sinó que lo busca con espacio.

¿Conclusión? Fichero sobreescrito, dejando posts con imagenes o archivos que no concuerdan con el archivo que quieres mostrar.

Solución

Le acabo de enviar un mail a Matt con el fallo para que lo tenga en cuenta, y por lo tanto no hay ningún parche o solución al problema, que repito, es muy molesto, he perdido 3 o 4 posts de imagenes que no tengo ya.

Por el mometo podemos hacer 2 cosas:

  1. Tener cuidado con el nombre de ficheros que subimos mediante WordPress, la más facil.
  2. Modificar el fichero admin-functions.php y añadir justo detrás de la definición de la funcion wp_handle_upload() (sobre la línea 1791) la siguiente línea.
function wp_handle_upload( &$file, $overrides = false ) {
        $file['name'] = strtolower(str_replace(" ", "-",$file['name'])); //Añado strtolower() para servidores Linux.
  • Andrés, si añado la linea que dices en admin-functions.php, cuando intento editar un comentario o pulso en la pestaña “comentarios” del menu de administración de WordPress, sale este error:

    Parse error: syntax error, unexpected T_STRING in …/wp-admin/admin-functions.php on line 1878

  • #1 ¿La has copiado y pegado directamente? Si es así reemplaza las comillas, WordPress las convierte al caracter HTML y el copiar y pegar no funciona.

  • Yo tengo otro problema con el upload.
    Me aparece que no tiene privilegios de escritura, aunque he comprobado con el FTP que si tengo privilegios 666.
    Me afecta a la hora de importar por ejemplo mi lista de blogs favoritos del Google Reader, importando el archivo .xml.

    Será cosa de tocar algo más del admin-funtions?

    Acabo de actualizar a 2.2 pero tengo el mismo problema desde que pasé de la 2.1.2 a la 2.1.3.

    Gracias por tu respuesta, como siempre.

  • Ya pensé en lo de las comillas (no era la primera vez), y lo corregí poniendo comillas simples en vez del carácter de acento que es lo que ponía al copiar/pegar. Pero sigue igual :-(

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.