Introduce wp_prepare_attachment_for_js(). Prepares an attachment post object to be JSON-encoded and fitted into an Attachment model, for 3.5 media.
props koopersmith. see #21390. git-svn-id: http://core.svn.wordpress.org/trunk@21680 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
c8a328f100
commit
5546df59d3
|
@ -1530,3 +1530,68 @@ function wp_plupload_default_settings() {
|
||||||
$wp_scripts->add_data( 'wp-plupload', 'data', $script );
|
$wp_scripts->add_data( 'wp-plupload', 'data', $script );
|
||||||
}
|
}
|
||||||
add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
|
add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepares an attachment post object for JS, where it is expected
|
||||||
|
* to be JSON-encoded and fit into an Attachment model.
|
||||||
|
*
|
||||||
|
* @since 3.5.0
|
||||||
|
*
|
||||||
|
* @param mixed $attachment Attachment ID or object.
|
||||||
|
* @return array Array of attachment details.
|
||||||
|
*/
|
||||||
|
function wp_prepare_attachment_for_js( $attachment ) {
|
||||||
|
if ( ! $attachment = get_post( $attachment ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( 'attachment' != $attachment->post_type )
|
||||||
|
return;
|
||||||
|
|
||||||
|
$meta = wp_get_attachment_metadata( $attachment->ID );
|
||||||
|
list( $type, $subtype ) = explode( '/', $attachment->post_mime_type );
|
||||||
|
|
||||||
|
$attachment_url = wp_get_attachment_url( $attachment->ID );
|
||||||
|
|
||||||
|
$response = array(
|
||||||
|
'id' => $attachment->ID,
|
||||||
|
'title' => $attachment->post_title,
|
||||||
|
'filename' => basename( $attachment->guid ),
|
||||||
|
'url' => $attachment_url,
|
||||||
|
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
|
||||||
|
'author' => $attachment->post_author,
|
||||||
|
'description' => $attachment->post_content,
|
||||||
|
'caption' => $attachment->post_excerpt,
|
||||||
|
'name' => $attachment->post_name,
|
||||||
|
'status' => $attachment->post_status,
|
||||||
|
'uploadedTo' => $attachment->post_parent,
|
||||||
|
'date' => $attachment->post_date_gmt . ' UTC',
|
||||||
|
'modified' => $attachment->post_modified_gmt . ' UTC',
|
||||||
|
'mime' => $attachment->post_mime_type,
|
||||||
|
'type' => $type,
|
||||||
|
'subtype' => $subtype,
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( 'image' === $type ) {
|
||||||
|
$sizes = array();
|
||||||
|
$base_url = str_replace( wp_basename( $attachment_url ), '', $attachment_url );
|
||||||
|
|
||||||
|
foreach ( $meta['sizes'] as $slug => $size ) {
|
||||||
|
$sizes[ $slug ] = array(
|
||||||
|
'height' => $size['height'],
|
||||||
|
'width' => $size['width'],
|
||||||
|
'url' => $base_url . $size['file'],
|
||||||
|
'orientation' => $size['height'] > $size['width'] ? 'portrait' : 'landscape',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = array_merge( $response, array(
|
||||||
|
'height' => $meta['height'],
|
||||||
|
'width' => $meta['width'],
|
||||||
|
'sizes' => $sizes,
|
||||||
|
'orientation' => $meta['height'] > $meta['width'] ? 'portrait' : 'landscape',
|
||||||
|
) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return apply_filters( 'wp_prepare_attachment_for_js', $response, $attachment, $meta );
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue