Problème avec WordPress 2.7.1

Je n’ai pas fait d’article sur la sortie cette semaine de WordPress 2.7.1, simplement parce que cette information était déjà largement relayée par de nombreux blogs. Cette version sensée corriger des erreurs, vient d’en ajouter une de taille: Les pièces jointes qui ne sont pas stockées dans le répertoire indiqué dans le menu Option/Divers ne sont plus affichées.

Donc sur ce blog, toutes les galleries ne fonctionnent plus, ainsi que certaines images qui ne sont pas affichées dans leur taille originale.

En attendant une version 2.7.2, voici le correctif: dans le fichier wp-includes/post.php, il faut commenter les lignes qui ont été ajouté (aux alentours de la ligne 2533 du fichier):

function wp_get_attachment_url( $post_id = 0 ) {
	$post_id = (int) $post_id;
	if ( !$post =& get_post( $post_id ) )
		return false;
 
	$url = '';
	if ( $file = get_post_meta( $post->ID, '_wp_attached_file', true) ) { //Get attached file
		if ( ($uploads = wp_upload_dir()) && false === $uploads['error'] ) { //Get upload directory
			if ( 0 === strpos($file, $uploads['basedir']) ) //Check that the upload base exists in the file location
				$url = str_replace($uploads['basedir'], $uploads['baseurl'], $file); //replace file location with url location
//			elseif ( false !== strpos($file, 'wp-content/uploads') )
//				$url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 );
//			else
//				$url = $uploads['baseurl'] . "/$file"; //Its a newly uploaded file, therefor $file is relative to the basedir.
		}
	}
 
	if ( empty($url) ) //If any of the above options failed, Fallback on the GUID as used pre-2.7, not recomended to rely upon this.
		$url = get_the_guid( $post->ID );
 
	if ( 'attachment' != $post->post_type || empty($url) )
		return false;
 
	return apply_filters( 'wp_get_attachment_url', $url, $post->ID );
}

Avec cette correction, les images s’affichent de nouveau correctement.

Par précaution, faîtes une sauvegarde du fichier post.php au préalable, pour revenir très rapidement en arrière si jamais cette modification générait d’autres soucis

.

7 thoughts on “Problème avec WordPress 2.7.1”

  1. Merci beaucoup de ton aide.

    N’étant pas un spécialiste PHP, c’est un développeur que je connais qui a résolu le problème. Il semble que tu m’aies donné une piste cohérente puisqu’il suffisait de renseigner le répertoire de stockage.

    See you soon.

  2. Le mieux est de prendre les choses dans l’ordre:
    1. Remettre le fichier post.php d’origine (télécharger le fichier ZIP de WordPress 2.7.1, et extraire le fichier post.php)
    2. Fixer les options adéquates dans Réglages / divers. Normalement, il n’y a que le premier champ a remplir. Le chemin indiqué ne doit pas se terminer par un /
    3. Si tout fonctionne correctement, alors tu corriges a nouveau le fichier post.php, et tu fais le test

    Le « disfonctionnement » du fichier post.php n’intervient que si tu stockes tes images a des endroits differents. Par exemple, dans mon cas, je stocke les galeries dans un repertoire gallery, et le reste des images dans le repertoire images. Si tu stockes tout au meme endroit, la modification est inutile. Si tu as tres peu d’images stockees ailleurs que dans wp-content/upload, le mieux est peut etre de « deplacer » ces images, en les « re-uploadant » au bon endroit.

    J’espere que ces quelques pistes t’aideront.

  3. Effectivement, je n’ai plus de message d’erreur, mais l’Upload de fichier ne marche pas pour autant.
    Je n’ai rien dans mon repertoire wp-content/uploads, le module ne parvient pas à uploader les fichiers :/
    Je ne comprends pas ce qui se passe, je suis bien en CHMOD 777 sur un serveur OVH.
    Quand je fais les test en local avec un EasyPHP, ca marche très bien, mais rien ne se passe en ligne.

  4. Curieux. J’ai simplement fait un copier/coller de mon propre fichier post.php.
    Il faut veiller a ne commenter que les 4 lignes, et notamment de ne pas commenter l’accolade fermante.

    A noter qu’il faudra renouveller l’operation lors de la mise a jour en 2.8.0

  5. Merci pour cet article qui répond exactement à mon problème. Cependant le bout de code provoque un message d’erreur dans wordpress. Avec la version originale du fichier  »post.php » ca ne marche pas, mais avec celle ci ca fait une erreur !
    Que faire ?
    Je continue a chercher de mon coté.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *