Make WordPress Core

Ticket #14110: wp_get_attachment_image.3.diff

File wp_get_attachment_image.3.diff, 4.1 KB (added by wpsmith, 13 years ago)

Minor modification to lines 695-6, restore null as empty strings

  • wp/wp-includes/media.php

     
    621621}
    622622
    623623/**
    624  * Get an HTML img element representing an image attachment
     624 * Gets an HTML image element (img) representing an attachment:
    625625 *
     626 * For an image attachment, the image scaled to the specified $size.
     627 *
     628 * For a non-image attachment, an icon like those shown in the Media Library (only when $icon is true).
     629 *
     630 * $size can be 'full', 'large', 'medium', 'thumbnail',
     631 * or any keyword registered with add_image_size().
     632 * Unrecognized keywords are interpreted as 'full' (not scaled).
     633 *
    626634 * While $size will accept an array, it is better to register a size with
    627635 * add_image_size() so that a cropped version is generated. It's much more
    628636 * efficient than having to find the closest-sized image and then having the
     
    633641 * @uses wp_get_attachment_image_src() Gets attachment file URL and dimensions
    634642 * @since 2.5.0
    635643 *
    636  * @param int $attachment_id Image attachment ID.
    637  * @param string $size Optional, default is 'thumbnail'.
    638  * @param bool $icon Optional, default is false. Whether it is an icon.
     644 * @param int $attachment_id Attachment ID.
     645 * @param string|array $size Keyword or array [width, height]. Ignored for icons. Optional, default is 'thumbnail'.
     646 * @param bool $icon Use an icon image. Ignored for image attachments. Optional, default is false.
     647 * @param array|string $attr HTML attributes to merge in. Optional.
    639648 * @return string HTML img element or empty string on failure.
    640649 */
    641650function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false, $attr = '') {
    642651
    643         $html = '';
     652        $html  = '';
    644653        $image = wp_get_attachment_image_src($attachment_id, $size, $icon);
     654       
    645655        if ( $image ) {
    646656                list($src, $width, $height) = $image;
    647                 $hwstring = image_hwstring($width, $height);
     657
     658                $width  = intval($width);
     659                $height = intval($height);
     660
    648661                if ( is_array($size) )
    649662                        $size = join('x', $size);
     663               
     664                if ( $icon && empty($size) ) {
     665                        $size = 'icon';
     666                }
     667
    650668                $attachment =& get_post($attachment_id);
    651669                $default_attr = array(
    652                         'src'   => $src,
    653                         'class' => "attachment-$size",
    654                         'alt'   => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )), // Use Alt field first
    655                         'title' => trim(strip_tags( $attachment->post_title )),
    656                 );
    657                 if ( empty($default_attr['alt']) )
    658                         $default_attr['alt'] = trim(strip_tags( $attachment->post_excerpt )); // If not, Use the Caption
    659                 if ( empty($default_attr['alt']) )
    660                         $default_attr['alt'] = trim(strip_tags( $attachment->post_title )); // Finally, use the title
     670                        // Use the image's Alternative Text field if available…
     671                        'alt'    => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ))),
     672                        'class'  => "attachment-$size",
     673                        'height' => $height,
     674                        'src'    => $src,
     675                        'title'  => trim( strip_tags( $attachment->post_title )),
     676                        'width'  => $width,
     677                        );
    661678
    662                 $attr = wp_parse_args($attr, $default_attr);
    663                 $attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment );
    664                 $attr = array_map( 'esc_attr', $attr );
    665                 $html = rtrim("<img $hwstring");
     679                if ( empty($default_attr['alt']) ) {
     680                        // otherwise Caption…
     681                        $default_attr['alt'] = trim( strip_tags( $attachment->post_excerpt ));
     682                }
     683 
     684                if ( empty($default_attr['alt']) ) {
     685                        // otherwise Title
     686                        $default_attr['alt'] = trim( strip_tags( $attachment->post_title ));
     687                }
     688
     689                $attr = wp_parse_args( $attr, $default_attr );
     690                $attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment, $icon );
     691               
     692                if ( !isset( $attr['width'], $attr['height'] )) {
     693                        // If dimensions are missing (null) after applying `wp_get_attachment_image_attributes` filter, restore them.
     694                        // Plugins can still empty these with ('width' => '', 'height' => '').
     695                        $attr['width']  = '';
     696                        $attr['height'] = '';
     697                }
     698               
     699                $html = '<img';
     700               
    666701                foreach ( $attr as $name => $value ) {
    667                         $html .= " $name=" . '"' . $value . '"';
     702                        $html .= sprintf( ' %s="%s"', $name, esc_attr($value) );
    668703                }
     704               
    669705                $html .= ' />';
    670706        }
    671707