Почистване на БД след деинсталиране на WP Smush.it

Torbalan Trolski

Well-Known Member
След като от yahoo спряха smush.it сървиса безплатната версия на плъгина стана безполезна и го разкарах.
Обаче пичовете не обичат да почистват след себе си и ставят една сюрия безполезни лайна в базата.

С този скрипт може да си ги изчистите. Слагате в главната директория извиквате го и го триете. Спестява около 300К на 1К изображения, зависи разбира се от темата и броя на тъмбнейлите, които се генерират.
PHP:
<!DOCTYPE HTML>
<html>

<head>
	<title>WP Smush.it Cleanup</title>
	<meta charset="UTF-8" />
	<meta name="robots" content="noindex">
</head>
<body>
<pre>
<?php
include 'wp-load.php';
#------------------------------------------------------------------------------
function format_bytes( $bytes, $precision = 2 ) {
	$units = array('B', 'KB', 'MB', 'GB', 'TB');
	$bytes = max($bytes, 0);
	$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
	$pow = min($pow, count($units) - 1);
	$bytes /= pow(1024, $pow);
	return round($bytes, $precision) . ' ' . $units[$pow];
}
#------------------------------------------------------------------------------
function get_all_attachments()
{
	global $wpdb;
	
	$qry = "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment';";
	
	$res = $wpdb->get_results($qry);
	
	return $res;
			
}
#------------------------------------------------------------------------------
$attachments = get_all_attachments(); 
$savings = 0;

foreach ( $attachments as $attachment ) {
	$meta = get_post_meta($attachment->ID, '_wp_attachment_metadata', true);
	
	if(isset($meta['wp_smushit'])) {
		$savings += strlen($meta['wp_smushit']);
		unset($meta['wp_smushit']);
	}
	
	if( isset($meta['sizes']) ) {
		foreach ($meta['sizes'] as $size => $thumb ) {
			if( isset($thumb['wp_smushit']) ) {
				$savings += strlen($thumb['wp_smushit']);
				unset( $meta['sizes'][$size]['wp_smushit'] );
			}
		}
	}
	
	update_post_meta($attachment->ID, '_wp_attachment_metadata', $meta );
}

echo "Cleaned : " . format_bytes($savings) . " from " . count($attachments) . " attachments";
?>
</pre>
</body>
</html>
 

Горе