web-dev-qa-db-fra.com

Problème de téléchargement de débogage: quelle partie de WP fait le redimensionnement d'image réelle?

J'ai un problème lors du téléchargement de grandes images: les images plus grandes que (environ) 2000x2000 ne génèrent pas de vignettes. Le fichier est bien téléchargé, mais aucune version redimensionnée n'est générée. Aucune erreur n'est affichée. Si j'en télécharge un plus petit, tout fonctionne correctement et des tailles plus petites sont générées (ex: test-100x100.jpg)

J'ai contacté mon support d'hébergement parce que je pensais que ce serait un problème de php-Gd, mais le support m'a dit que tout allait bien. Voici ce que nous avons exclu:

  • Problèmes de permission
  • Espace disque insuffisant
  • Mémoire insuffisante (fonctionne correctement sur un serveur disposant de la moitié de la mémoire)
  • Limite maximale d'envoi (dans WP et sur le serveur)

Nous avons même essayé un autre serveur avec exactement la même configuration, et tout fonctionne bien ici.

  • J'utilise une copie vierge de la dernière version WP. pas de plugins activés
  • J'ai essayé des plugins qui régénèrent les vignettes, mais même dans ce cas, tous les processus se terminent correctement sans erreur, mais aucun redimensionnement n'a été effectué.

Je ne suis donc pas en train d'essayer de déboguer manuellement WP, et j'ai du mal à trouver le fichier exact dans lequel les fichiers téléchargés sont gérés et redimensionnés.

Si on trouve des classes dans /wp-includes:

  • class-wp-image-editor.php
  • class-wp-image-editor-Gd.php

Mais il semble qu'aucun d'entre eux ne soit utilisé lors d'un téléchargement. (J'ai mis die() dans diverses fonctions)

3
user63457

Vous pouvez ajouter un filtre à wp_image_editors et voir quel éditeur est utilisé (Gd ou Imagick). Dans un projet précédent, j'ai étendu les routines de redimensionnement à la fois sur Gd et Imagick, et les méthodes responsables du redimensionnement sont WP_Image_Editor_Imagick->crop() et WP_Image_Editor_Gd->_resize().

Notez que WP_Image_Editor_Gd->resize() est juste un wrapper.

Le processus est exécuté sur ajax, mais vous pouvez utiliser var_dump() pour le déboguer - il apparaîtra sur les messages d'image téléchargés, la boîte avec la barre de progression et tout.

add_filter( 'wp_image_editors', 'wp23092013_extend_image_editor' );

function wp23092013_extend_image_editor( $editor ) {
    var_dump( $editor );
    return $editor;
}

Bon débogage;)

1
Dan Ștefancu