WordPress : Impossible d’écrire la sortie error_log… mais seulement à partir d’une certaine fonction
La replace_uploaded_image()
fonction fonctionne très bien ! Je sais que cela fonctionne parce que lorsque je me connecte à WP Admin et que je télécharge une image, elle fait exactement ce qu’elle est censée faire. De plus, si je supprime la fonction et que je télécharge une image, l’image téléchargée d’origine est là. (exactement ce à quoi vous vous attendez.)
J’essaie de voir le contenu des variables dans la fonction. Je ne comprends pas pourquoi il semble exécuter tout le code sauf les write_log()
parties.
La fonction custom_gallery fonctionne et je n’ai aucun problème là-bas. Je l’ai seulement inclus pour illustrer le fait que l’utilisation write_log()
dans cette fonction fonctionne bien.
Le seul moment où write_log()
cela ne fonctionne pas, c’est lorsqu’il est appelé de l’intérieur de replace_uploaded_image()
.
Une idée pourquoi c’est comme ça?
<?php
/**
* Replace default gallery HTML with my own.
*/
function custom_gallery ( $output, $attr ) {
// Do some stuff
// A bunch of code that works good.
write_log ( 'test' ); // Writing string from here works.
write_log( $object ); // writing array or object from here works.
return $output;
}
add_filter( 'post_gallery', 'custom_gallery', 10, 2 );
/**
* Delete the original uploaded image and use the large format in its place.
*/
function replace_uploaded_image ( $image_data ) {
write_log ( 'test' ); // Nothing appears in error_log
write_log ( $image_data ); // Nothing appears in error_log
// if there is no large image : return
if ( !isset ( $image_data['sizes']['large'] ) ) return $image_data;
// paths to the uploaded image and the large image
$upload_dir = wp_upload_dir();
$uploaded_image_location = $upload_dir['basedir'] . '/' . $image_data['file'];
$current_subdir = substr( $image_data['file'], 0, strrpos($image_data['file'], '/' ) );
$large_image_location = $upload_dir['basedir'] . '/' . $current_subdir . '/' . $image_data['sizes']['large']['file'];
// delete the uploaded image
unlink( $uploaded_image_location );
// rename the large image
rename( $large_image_location, $uploaded_image_location );
// update image metadata and return them
$image_data['width'] = $image_data['sizes']['large']['width'];
$image_data['height'] = $image_data['sizes']['large']['height'];
unset( $image_data['sizes']['large'] );
write_log ( 'test' ); // Nothing appears in error_log
write_log ( $image_data ); // Nothing appears in error_log
return $image_data;
}
add_filter( 'wp_generate_attachment_metadata', 'replace_uploaded_image' );
// for debugging. write to error log.
if ( !function_exists( 'write_log' ) ) {
function write_log ( $log ) {
if ( true === WP_DEBUG ) {
error_log( '******************************' );
if ( is_array( $log ) || is_object( $log ) ) {
error_log( print_r( $log, true ) );
} else {
error_log( $log );
}
}
}
}
?>
Solution n°1 trouvée
Il s’avère que je cherchais dans le mauvais fichier error_log. Oh !
Pour toute autre personne ayant ce problème, n’oubliez pas de vérifier également le error_log situé dans le dossier wp_admin. Pas seulement celui de la racine de WordPress.
0 commentaire