Как удалить лишнюю информацию из метаданных вложения _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; }
Влез в функцию и обнулил данные