WordPress - генерация лишних записей в DB '_wp_attachment_metadata' в таблице 'wp_postmeta' при фронтенд загрузке изображений

Реализовал страницу для добавления записи с возможность прикреплять файлы.

Столкнулся с проблемой если этой формой пользуется авторизованный пользователь все работает как положено:

  1. создает запись;
  2. загружает файлы, создает вложения, делает связь запись + вложения;
  3. генерирует дополнительные размеры изображений;
  4. регистрирует мета данные _wp_attachment_metadata в wp_postmeta. В таблице есть соответствующая запись вида (все работает как надо!):

a:5:{s:5:"width";i:800;s:6:"height";i:598;s:4:"file";s:24:"1/31/13/134840-2579.jpeg";s:5:"sizes";a:1:{s:9:"thumbnail";a:4:{s:4:"file";s:24:"134840-2579-300x224.jpeg";s:5:"width";i:300;s:6:"height";i:224;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{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:{}}}

Однако если этой формой пользуется не авторизованный пользователь, то:

  1. создает запись;
  2. загружает файлы, создает вложения, делает связь запись + вложения;
  3. генерирует дополнительные размеры изображений;
  4. регистрирует мета данные 3 раза, в таблице wp_postmeta на одно вложение (post_id) - создается 3 саписи _wp_attachment_metadata. Что характерно в первой созданной мета записи нет данных о thumbnail, в следующих двух (идентичных) есть данные от thumbnail. На выходе имеем - WP не понимает что у изображения есть дополнительный размер (миниатюра) т.к. он ее не находит описание thumbnail в первой попавшейся записи _wp_attachment_metadata. Вот такие 3 записи создаются в DB - в следующем порядке:

1.

a:5:{s:5:"width";i:800;s:6:"height";i:533;s:4:"file";s:22:"2/3/6/063740-5935.jpeg";s:5:"sizes";a:0:{}s:10:"image_meta";a:12:{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:{}}}

2.

a:5:{s:5:"width";i:800;s:6:"height";i:533;s:4:"file";s:22:"2/3/6/063740-5935.jpeg";s:5:"sizes";a:1:{s:9:"thumbnail";a:4:{s:4:"file";s:24:"063740-5935-300x200.jpeg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{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:{}}}

3.

a:5:{s:5:"width";i:800;s:6:"height";i:533;s:4:"file";s:22:"2/3/6/063740-5935.jpeg";s:5:"sizes";a:1:{s:9:"thumbnail";a:4:{s:4:"file";s:24:"063740-5935-300x200.jpeg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{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:{}}}

Для загрузки файлов и создания вложений использую media_handle_upload() такую функцию:

function insert_attachment($file,$post) {
  require_once(ABSPATH . 'wp-admin/includes/image.php');
  require_once(ABSPATH . 'wp-admin/includes/file.php');
  require_once(ABSPATH . 'wp-admin/includes/media.php');
  $attach = media_handle_upload( $file, $post, array('post_author' => 1) );
  if( !is_wp_error( $attach ) ) return $attach;
  else return false;
}

Ответы (0 шт):