La dernière version de Timthumb (2.8.9 au moment ou j’écris ces lignes) est désormais réutilisée massivement par de nombreux thèmes pour l’affichage des vignettes en différents endroits d’un site. Magnifique !
OUI MAIS !
En wordpress multisite, sur un site avec un domaine personnalisé (avec les plugins de domain mapping), plus rien ne marche et plus de vignettes !
Au secours !
Ne paniquez pas, cela est prévu par Timthumb. Voila l’astuce pour faire fonctionner correctement votre thème dans un environnement multisite :
1 – mettez a jour le script timthumb en 2.8.9 (corrigée de la fameuse faille de sécurité identifiée il y a un moment) ici :
http://timthumb.googlecode.com/svn/trunk/timthumb.php
(clic bouton droit/enregistrer la source sous)
2 – veillez aux droits sur les fichiers / dossiers : 775 pour le dossier /cache/ et 755 pour le fichier timthumb.php lui même.
3 – Ouvrez le fichier avec votre notepad ++ préféré :
et portez les modifications suivantes :
Ligne 32 : if(! defined(‘ALLOW_EXTERNAL’) ) define (‘ALLOW_EXTERNAL’, TRUE);
=> vérifiez que la valuer est bien « true »
Ligne 34 : if(! defined(‘FETCH_LOCAL_URLS’) ) define (‘FETCH_LOCAL_URLS’, false);
=> remplacez false par true
Lignes 124 et suivantes : il s’agit de la liste des sites autorisés pour l’exécution du script (c’est la fameuse correction de sécurité)
- ajoutez votre site dans la liste en respectant la syntaxe. Ex pour ce site : ‘wpmu-blogs.net’,
- ajoutez également le domaine ORIGINEL (non mappé). Ex pour ce site : ‘wpmu.mgr-artagency.com’ ,
Et le tour est joué !
Si ca ne marche pas (sur certains serveurs un peu tatillons c’est possible), cherchez avec notepad ++ toutes les occurrences dans tous les fichiers du thème de l’expression
bloginfo(‘url’)
et remplacez la par
site_url()
La cause du problème vient de la manière de gérer les fichiers dans WordPress multisite, qui par défaut va chercher dans /uploads/ ses images, alors que le multisite va dans /blogs.dir/id du blog/files/
Ce paramétrage de timthumb va permettre tout simplement d’utiliser l’url exacte de l’image (en http) et non plus le chemin de l’image sur le disque, source de l’erreur.
Et vous voila avec un joli thème thumbnailisé sur votre site wordpress, en multisite, avec un domain mapping !
Note :
Accessoirement vous pouvez modifier certains autres paramètres du script :
Ligne 28 : ajustez la memory limit a celle réellement disponible sur votre serveur
Lignes 51 et 52 : ajustez la taille max. des images à traiter, par défaut 1500 Px
Bonjour,
Malheureusement, dans la version 2.8.10, ils ont supprimés FETCH_LOCAL_URLS.
J’ai donc fait une toute petite modif dans le code :
Ligne ~212 : commenter $this->src = preg_replace(‘/https?://(?:www.)?’ . $this->myHost . ‘/i’, », $this->src);
Ça évite qu’il supprime le nom de domaine de la source de l’image passé en paramètre.
Juste en dessous, ajouter : $ALLOWED_SITES[] = $this->myHost; afin d’autoriser automatiquement la récupération des images pour le site courant (l’ajouter à la main est un peu fastidieux si vous avez beaucoup de site héberger sur votre plateforme MU)
Merci pour ce patch pour la dernière version !
Cela fonctionne comme un charme !
Alors cet article m’arrange bien parce que j’ai acheté un thème sur themeforest qui ne fonctionne pas sans le thimthumb, mais en fait je voulais surtout réagir sur l’article qui parle de Peerapong (mais les commentaires sont fermés ..) et je trouve que cet artiste (auteur ?) n’est pas super sympa quand on achète un thème, j’ai acheté un thème et je me suis fait litteralement envoyer boulet !
La toute deniere version de timthumb regle le problème. Ne pas hésiter a mettre a jour le fichier, cet article est un peu ancien déjà
Quand a peerapong c’est clair ! non seulement ses thèmes sont codés à l’arrache mais il est simplement insupportable au support. Faire passer le mot, une telle attitude est inacceptable !!!