It’s not easy to count the amount of posts an image is attached to – WordPress simply doesn’t keep track of that. It just keeps track of the post an attachment was originally uploaded to (not necessarily even using it there).
Plugin
To get you started as quick as possible, here’s the plugin code:
<?php
/**
* Plugin Name: Media Count
* Description: Adds a column to the media admin list table to show the count of posts
*/
add_filter( 'manage_media_columns', function( $cols, $detached )
{
$cols['count'] = 'Count';
$cols['size'] = 'Size';
return $cols;
}, 10, 2 );
add_action( 'manage_media_custom_column', function( $col, $id )
{
switch ( $col )
{
case 'size' :
$meta = wp_get_attachment_metadata( $id );
// Image
isset( $meta['width'] )
AND print "{$meta['width']} × {$meta['height']}";
// Audio
isset( $meta['bitrate'] )
AND print "{$meta['length_formatted']} min";
break;
case 'count' :
$att = get_post_custom( $id );
$file = $att['_wp_attached_file'][0];
// Do not take full path as different image sizes could
// have different month, year folders due to theme and image size changes
$file = pathinfo( $file, PATHINFO_FILENAME );
// @TODO Fill in the blanks
break;
}
}, 10, 2 );
Question:
How to count the amount of posts an attachment is used in – the most efficient way.
Final Plugin
The full plugin can be downloaded as Gist here.