Как удалить лишнюю информацию из метаданных вложения _wp_attachment_metadata
Лазил по базе и увидел, что неплохо сжирает места, да и вообще информация эта мне не нужна.
в мета-поле _wp_attachment_metadata хранится такая строка для каждого изображения:
s: 10: "image_meta";a: 13: {
s: 8: "aperture";s: 1: "0";s: 6: "credit";s: 0: "";s: 6: "camera";s: 0: "";s: 7: "caption";s: 0: "";
s: 17: "created_timestamp";s: 1: "0";s: 9: "copyright";s: 0: "";s: 12: "focal_length";
s: 1: "0";s: 3: "iso";s: 1: "0";s: 13: "shutter_speed";s: 1: "0";s: 5: "title";
s: 0: "";s: 11: "orientation";s: 1: "0";s: 8: "keywords";a: 0: {}
s: 9: "size_byte";i: 1384;
}
единственно что там используется это "size_byte";i: 1384 - это уже я подключил,
как убить генерацию этого мусора ?? оставить только
s: 10: "image_meta";a: 13: {
"size_byte";i: 1384;
}
Я бы не стал сносить все эти поля. Потому что, например, точно знаю что поле orientation иногда бывает нужно при обработки картинок. Возможно и другие какие-то юзаются в некоторый случаях.
Думаю будет более правильно удалить конкретные поля на хуке wp_read_image_metadata:
add_filter( 'wp_read_image_metadata', 'wp_kama_read_image_metadata_filter', 10, 5 );
/**
* Function for `wp_read_image_metadata` filter-hook.
*
* @param array $meta Image meta data.
* @param string $file Path to image file.
* @param int $image_type Type of image, one of the `IMAGETYPE_XXX` constants.
* @param array $iptc IPTC data.
* @param array $exif EXIF data.
*
* @return array
*/
function wp_kama_read_image_metadata_filter( $meta, $file, $image_type, $iptc, $exif ){
$unset_fields = [
'aperture' => 0,
'credit' => '',
'camera' => '',
//'caption' => '',
'created_timestamp' => 0,
'copyright' => '',
'focal_length' => 0,
'iso' => 0,
'shutter_speed' => 0,
//'title' => '',
//'orientation' => 0, // leave
'keywords' => array(),
];
$meta = array_diff_key( $meta, $unset_fields );
$meta = array_filter( $meta ); // remove empty
return $meta;
}
Влез в функцию и обнулил данные
add_filter( 'wp_generate_attachment_metadata', 'filter_function_name_7702', 120, 3); function filter_function_name_7702($metadata, $attachment_id, $context) { // Original image Size byte $metadata['image_meta'] = array(); $metadata['image_meta']['size_byte'] = $image_size_kb; return $metadata; }