Avoid an expensive attachment counting query on the post editing screen. See #27985, for trunk.

Built from https://develop.svn.wordpress.org/trunk@28191


git-svn-id: http://core.svn.wordpress.org/trunk@28021 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
John Blackbourn 2014-04-23 22:05:16 +00:00
parent 7b4d339454
commit d6e03df3c9
2 changed files with 19 additions and 12 deletions

View File

@ -2695,16 +2695,6 @@ function wp_enqueue_media( $args = array() ) {
}
}
$audio = $video = 0;
$counts = (array) wp_count_attachments();
foreach ( $counts as $mime => $total ) {
if ( 0 === strpos( $mime, 'audio/' ) ) {
$audio += (int) $total;
} elseif ( 0 === strpos( $mime, 'video/' ) ) {
$video += (int) $total;
}
}
$settings = array(
'tabs' => $tabs,
'tabUrl' => add_query_arg( array( 'chromeless' => true ), admin_url('media-upload.php') ),
@ -2719,8 +2709,8 @@ function wp_enqueue_media( $args = array() ) {
),
'defaultProps' => $props,
'attachmentCounts' => array(
'audio' => $audio,
'video' => $video
'audio' => wp_has_mime_type_attachments( 'audio' ) ? 1 : 0,
'video' => wp_has_mime_type_attachments( 'video' ) ? 1 : 0
),
'embedExts' => $exts,
'embedMimes' => $ext_mimes,

View File

@ -2291,6 +2291,23 @@ function wp_count_attachments( $mime_type = '' ) {
return apply_filters( 'wp_count_attachments', (object) $counts, $mime_type );
}
/**
* Determine if at least one attachment of a particular mime-type has been uploaded
*
* @global wpdb $wpdb
*
* @since 3.9.1
*
* @param string $mime_type The mime-type string to check.
*
* @return int|null If exist, the post ID of the first found attachment.
*/
function wp_has_mime_type_attachments( $mime_type ) {
global $wpdb;
$sql = sprintf( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE '%s%%' LIMIT 1", like_escape( $mime_type ) );
return $wpdb->get_var( $sql );
}
/**
* Get default post mime types
*