WordPress : Impossible d’écrire la sortie error_log… mais seulement à partir d’une certaine fonction

Publié par Jean-Michel le

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.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

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