Disk and Database Usage Widget
Shows how much space the uploads folder and the database take, recalculated once a day, so you notice a full hosting plan early.
Opens WPIDE on
Code
add_action( 'wp_dashboard_setup', function () {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
wp_add_dashboard_widget( 'wpide_disk_usage', 'Disk Usage', function () {
global $wpdb;
$usage = get_transient( 'wpide_disk_usage' );
if ( false === $usage ) {
$uploads = wp_get_upload_dir();
$bytes = 0;
if ( is_dir( $uploads['basedir'] ) ) {
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $uploads['basedir'], FilesystemIterator::SKIP_DOTS ) );
foreach ( $files as $file ) {
$bytes += $file->isFile() ? $file->getSize() : 0;
}
}
$database = (float) $wpdb->get_var( $wpdb->prepare(
'SELECT SUM(data_length + index_length) FROM information_schema.TABLES WHERE table_schema = %s',
DB_NAME
) );
$usage = array( 'uploads' => $bytes, 'database' => $database, 'time' => time() );
set_transient( 'wpide_disk_usage', $usage, DAY_IN_SECONDS );
}
printf(
'<p>Uploads folder: <strong>%1$s</strong><br>Database: <strong>%2$s</strong></p><p style="color:#646970">Calculated %3$s ago.</p>',
esc_html( size_format( $usage['uploads'], 1 ) ),
esc_html( size_format( $usage['database'], 1 ) ),
esc_html( human_time_diff( $usage['time'], time() ) )
);
} );
} );
Notes
The first calculation can take a few seconds on sites with many uploads.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.