WordPress.org

Make WordPress Core

Changes between Initial Version and Version 5 of Ticket #18951


Ignore:
Timestamp:
10/14/2011 06:18:39 PM (7 years ago)
Author:
scribu
Comment:

That's why you shouldn't post long blocks of code directly in the description.

You should use trac attachments instead.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #18951

    • Property Cc 24-7@… added
  • Ticket #18951 – Description

    initial v5  
    1414The function also cares about cropping images if 4th argument set to {{{true}}} when registering the size using {{{add_image_size();}}}.
    1515
    16 The actual function (documented as far as possible).
    17 
    18 {{{
    19 /**
    20  * Default image
    21  *
    22  * Builds an default <img> for use in themes or plugins before any other images are added.
    23  * Resizes & crops the image using the built-in (retireved via `get_intermediate_image_sizes();`)
    24  * or custom image (added via `add_image_size();`) sizes.
    25  *
    26  * Retrieves calculated resize dimension @uses image_resize_dimensions();
    27  * Builds the width and height string @uses image_hwstring();
    28  *
    29  * @param $args (array)
    30  *              string $url URl to the given default image.
    31  *              string $size Optional. Default is 'medium'.
    32  *              string (optional) $alt Image Description for the alt attribute.
    33  *              string (optional) $title Image Description for the title attribute.
    34  *              string (optional) $align Part of the class name for aligning the image.
    35  *              string (optional) $echo Wheter to return or echo the $image
    36  * @return string HTML IMG element for given image attachment
    37  */
    38 function wp_default_img( $attr = array( 'url', 'size' => 'medium', 'classes' => false, 'alt' => false, 'title' => false, 'align' => 'none', 'echo' => true ) )
    39 {
    40         // Sizes registered via add_image_size();
    41         global $_wp_additional_image_sizes;
    42 
    43         if ( 'thumb' === $attr['size'] )
    44                 $attr['size'] = 'thumbnail';
    45 
    46         // Size in built in sizes - call size setting from DB
    47         # behavoir in here dependent on @link http://core.trac.wordpress.org/ticket/18947
    48         if ( ! in_array( $attr['size'], array_keys( $_wp_additional_image_sizes ) ) )
    49         {
    50                 $sizes                          = get_intermediate_image_sizes();
    51                 // Get option - gladly autoloaded/can use wp_cache_get();
    52                 $size_data['width']     = intval( get_option( "{$attr['size']}_size_w") );
    53                 $size_data['height']= intval( get_option( "{$attr['size']}_size_h") );
    54                 // Not sure how this will behave if cropped is false (autoloaded option not added)
    55                 $size_data['crop']      = get_option( "{$attr['size']}_crop" ) ? get_option( "{$attr['size']}_crop" ) : false;
    56         }
    57         // Size array from global registered additional/custom sizes array
    58         else
    59         {
    60                 $size_data = $_wp_additional_image_sizes[ $attr['size'] ];
    61         }
    62 
    63         // Retrieve image width & height
    64         $img_info       = @getimagesize( $attr['url'] );
    65 
    66         // Calculate final dimensions - if "crop" was set to true during add_image_size(), the img will get ... cropped
    67         $end_sizes      = image_resize_dimensions( $img_info[0], $img_info[1], $size_data['width'], $size_data['height'], $size_data['crop'] );
    68 
    69         // defaults to px units - can't get changed, as applying units is not possible
    70         $hwstring       = ' '.trim( image_hwstring( $end_sizes[4], $end_sizes[5] ) );
    71 
    72         // Attributes:
    73         // Not made required as users tend to do funky things (...and lock screen readers out)
    74         $attr['alt'] = $attr['alt'] ? ' alt="'.esc_attr( $attr['alt'] )."'" : '';
    75 
    76         if ( ! $attr['title'] )
    77                 $attr['title'] = sprintf( __('default image of type: %1$s'), explode( "/", $img_info['mime'] ) );
    78         $attr['title'] = $attr['title'] ? ' title="'.esc_attr( $attr['title'] )."'" : '';
    79 
    80         $attr['classes'] = "wp-img-default ".esc_attr( $attr['classes'] ? $attr['classes'] : '' );
    81         $attr['align'] = $attr['align'] ? "align".esc_attr( $attr['align'] ) : '';
    82         $attr['size'] = "size-".esc_attr( $attr['size'] );
    83 
    84         // Allow filtering of the default attributes
    85         $attributes     = apply_filters( 'wp_default_img_attr', $attr );
    86 
    87         // Build class attribute, considering that maybe some attribute was unset via the filter
    88         $classes  = ' class="';
    89         $classes .= 'wp-img-default'.esc_attr( $attr['classes'] ? ' '.$attr['classes'] : '' );
    90         $classes .= $attr['align'] ? ' '.esc_attr( $attr['align'] ) : '';
    91         $classes .= $attr['size'] ? ' '.esc_attr( $attr['size'] ).'" ' : '" ';
    92 
    93         $image          = "<img src='{$url}'{$hwstring}{$classes}{$alt}{$title} />";
    94         $image          = apply_filters( 'wp_default_img', $image );
    95 
    96         if ( ! $attr['echo'] )
    97                 return $image;
    98 
    99         return print $image;
    100 }
    101 }}}
    102 
    10316Related ticket that pops the whole image size data into [http://core.trac.wordpress.org/browser/branches/3.2/wp-includes/media.php#L580 get_intermediate_image_sizes();], can be found here #18947.