Timthumb en WordPress Multisite

Seguramente, la mayoría de vosotros conoce Timthumb, el script por excelencia que se usa para crear miniaturas por muchos temas de WordPress, sobre todo temas Premium.

¿Pero que pasa si usamos un tema premium que incorpora Timthumb?, simplemente no funcionará. El motivo es que Timthumb necesita la ruta correcta a la imagen y WordPress Multisite le da la ya conocida por todos ruta de http://subsitio.sitio.tld/files/año/mes/imagen.jpg

El problema consiste en que en esta dirección no existe la imagen ya que es un rewrite de http://subsitio.sitio.tld/wp-content/blogs.dir/blog_id/files/año/mes/imagen.jpg por lo tanto, no la encontrará y no mostrará la miniatura.

Por un proyecto que estoy realizando y porque muchas de mis páginas la he migrado a una instalación Multisite (simplemente para facilitarme la vida en la gestión y actualización de estas) me he encontrado de frente con este problema.

Pero hay una solución y muy sencilla y que podréis ir aplicando actualización tras actualización de Timthumb, cómo mínimo dentro de la rama 2.8.x.

La solución es la siguiente, descargados Timthump de la página oficial, debéis copiar todo el código y pegarlo dentro un editor de texto plano.

Seguidamente, justo bajo:

// -------------------------------------------------------------
// -------------- STOP EDITING CONFIGURATION HERE --------------
// -------------------------------------------------------------

Añadís esto:

// FIX Multisitio 1 de 2
require( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

De forma que os quedaría así:

// -------------------------------------------------------------
// -------------- STOP EDITING CONFIGURATION HERE --------------
// -------------------------------------------------------------

// FIX Multisitio 1 de 2
require( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

timthumb::start();

A continuación, buscáis la línea que pone:

protected function calcDocRoot(){
        $docRoot = @$_SERVER['DOCUMENT_ROOT'];

Y justo debajo, añadís esto:

// FIX Multisitio 2 de 2
if (is_multisite())
{
    global $blog_id;
    if (isset($blog_id) && $blog_id > 0)
    {
        $docRoot .= '/wp-content/blogs.dir/' . $blog_id . '/';
    }
}

Es decir, os quedará así:

protected function calcDocRoot(){
        $docRoot = @$_SERVER['DOCUMENT_ROOT'];

/// Fix Multisitio 2 de 2
if (is_multisite())
{
    global $blog_id;
    if (isset($blog_id) && $blog_id > 0)
    {
        $docRoot .= '/wp-content/blogs.dir/' . $blog_id . '/';
    }
}

Y ya está, guardáis con el nombre que utilice vuestro tema, normalmente timthump.php o thump.php y ya os funcionarán las miniaturas generadas.

Para todo aquel que quiera, también os dejo el archivo modificado con las indicaciones señaladas (Versión 2.8.3 la última en estos momentos) solo debéis descargarlo y borrar el txt del final.

Para futuras actualizaciones (cómo mínimo dentro de la rama 2.8.x, ya tenéis la metodología para que funcione de nuevo.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(1 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

3 comentarios en “Timthumb en WordPress Multisite”

  1. Muchísimas gracias, José.

    Me ha funcionado. Compré una plantilla wordpress que usaba Timthumb y me estaba siendo imposible hacerlo funcionar. He bajado tu archivo modificado y por fin aparecen los thumbs.

  2. Yo tengo el tema graphene con 2 subsitios.  En los subsitios no veo las imagenes en la libreria multimedia ni en las entradasDonde tengo que insertar el archivo thump.php para poder ver las imagenes?
    Gracias

  3. Yo tengo problemas con el plugin de image store… no se si se considera »multisitio» o no pero no puedo acloparlo con un theme de team forest (showroom) , buscando he encontrado esto… no se si tiene que ver o no..

Deja un comentario

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

 

Ir arriba Ir al contenido