Wordpress wp_generate_attachment_metadata прерывает циклPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Wordpress wp_generate_attachment_metadata прерывает цикл

Сообщение Anonymous »

Я программно загружаю изображения в медиа-галерею WordPress в цикле for. Все работает нормально, пока я не вызываю wp_generate_attachment_metadata , это разрывает цикл, похоже, приводит к повторной загрузке файла и заканчивается внутренней ошибкой сервера 500.

Скрипт работает нормально, когда я удаляю wp_generate_attachment_metadata .

Когда я запускаю сценарий и файлы загружены, wp_generate_attachment_metadata работает должным образом и возвращает правильные идентификаторы.

private function uploadImage($image_url) {

$upload_dir = wp_upload_dir();

$image_data = file_get_contents($image_url);

$filename = basename($image_url);

if(wp_mkdir_p($upload_dir['path'])) {
$fileExists = is_file( $upload_dir['path'] . '/' . $filename);

$file = $upload_dir['path'] . '/' . $filename;

} else {
$fileExists = is_file( $upload_dir['basedir'] . '/' . $filename);

$file = $upload_dir['basedir'] . '/' . $filename;
}

if($fileExists) {

global $wpdb;

$prepare = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_title LIKE '%s'", '%'.$filename.'%');

$posts = $wpdb->get_results($prepare );

$attach_id = $posts[0]->ID;

if(!$attach_id) {

$wp_filetype = wp_check_filetype($file, null );

$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);

var_dump('here');
$attach_id = wp_insert_attachment( $attachment, $file);

$attach_data = wp_generate_attachment_metadata( $attach_id, $file );

wp_update_attachment_metadata( $attach_id, $attach_data );
}

return $attach_id;

} else {

file_put_contents($file, $image_data);

$wp_filetype = wp_check_filetype($file, null );

$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, $file);

$attach_data = wp_generate_attachment_metadata( $attach_id, $file );

wp_update_attachment_metadata( $attach_id, $attach_data );

return $attach_id;
}

}


Это вызывается в цикле:

foreach ($property->pictures[0]->picture as $picture) {

$imageID = $this->uploadImage($picture->filename);

if($imageID){
array_push($images,$imageID);
}


Подробнее здесь: https://stackoverflow.com/questions/402 ... reaks-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»