web-dev-qa-db-fra.com

Si aucune image sélectionnée n'est définie, default.png du noyau est affiché.

Je rencontre un problème étrange lors de l’obtention des URL d’image avec wp_get_attachment_image_src. Si aucune image sélectionnée n'a été définie, cela devrait renvoyer null. Cependant, dans ce cas, il renvoie wp-includes/images/crystal/default.png.

Le code que j'utilise pour obtenir l'URL est:

$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id,'full', true);
$thumb_url = $thumb_url_array[0]

Cela se passe dans WordPress 4.1.

1
WordPress Mike

voici la fonction wp_get_attachment_image_scr:

function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {

    // get a thumbnail or intermediate image if there is one
    if ( $image = image_downsize($attachment_id, $size) )
        return $image;

    $src = false;

    if ( $icon && $src = wp_mime_type_icon($attachment_id) ) {
        /** This filter is documented in wp-includes/post.php */
        $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );
        $src_file = $icon_dir . '/' . wp_basename($src);
        @list($width, $height) = getimagesize($src_file);
    }
    if ( $src && $width && $height )
        return array( $src, $width, $height );
    return false;
}

comme vous pouvez voir si le 3-ème paramètre est vrai, il recherche dans cette image le répertoire (et je suppose que wp_mime_type_icon renvoie default.png et que certains de vos plugins add_filter à icon_dir sont wp-includes/images/crystal

Supprimez simplement le troisième paramètre de votre exemple: $thumb_url_array = wp_get_attachment_image_src($thumb_id,'full'); et il devrait renvoyer false s'il n'y a pas d'image ou d'URL d'image.

5
Maikal