Я пытаюсь добавить кучу сообщений программным способом, а затем добавить их сопутствующие изображения. У меня есть массив со всеми именами файлов изображений в нем, и я смог добавить их в базу данных, но я не могу получить правильные эскизы, созданные.Попытка создания миниатюр WordPress программно
Посты поступают из csv, расположенного в wp-content/uploads/dirname /. У них есть номера в именах файлов, которые соответствуют идентификатору в CSV, так как я знаю, какие изображения нужно добавить к тому, что сообщение id.
Я получил часть wp_insert_attachment(), чтобы работать с изображениями прямо в их маленькой директории, но я не мог получить эскизы для генерации. Я установил плагин регенерации миниатюр, и он смог их сгенерировать, но я не могу понять, что это произойдет программно.
Я думал, что это может быть связано с тем, что wp_generate_attachment нуждается в том, чтобы фотографии были в/uploads/2011/12/(например,), поэтому я начал путь перемещения изображений, а затем попытался их добавить. Это имеет смысл в любом случае, потому что я предпочитаю делать копии, а не 5 или 6 разных размеров мультимедиа, добавленных в мой wp-content/uploads/dirname/dir.
В любом случае, это не сработает. Перемещение изображений через копию PHP не работает, а эскизы не генерируются.
foreach ($frazerfiles[$stock_num] as $stock_img){
require_once(ABSPATH . 'wp-admin/includes/image.php');
echo "... ...Trying to add attachment metadata...";
// copy the file to the upload dir
$uploads = wp_upload_dir();
$file_to_move = ABSPATH."wp-content/uploads/".$stock_img;
if (copy($file_to_move, $uploads['path']."/")) {
echo "Moved $file_to_move to ".$uploads['path']."/";
$my_moved_file = $uploads['path']."/".$stock_img;
// I think this is failing because the images aren't in the upload dir.
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($stock_img)),
'post_content' => '',
'post_status' => 'inherit'
);
if ($attach_id = wp_insert_attachment($attachment, $my_moved_file, $newpostid)) {
if ($attach_data = wp_generate_attachment_metadata($attach_id, $my_moved_file)) {
echo "...success for $my_moved_file: ID:$attach_id<br />\n";
} else {
echo "...FAILED for $my_moved_file ID:$attach_id<br />\n";
print_r($attach_data);
}
} else { // inserting attachment failed
echo "Insert attachment failed for $my_moved_file to $newpostid<br />\n";
}
} else {
echo "Failed moving $file_to_move to ".$uploads['path']."/";
}
}// images foreach
Хм, вы правы. Спасибо за предложение. Тем не менее, часть копии не работает. Есть какие-то мысли? –
Обновленный ответ, пожалуйста, проверьте после ОБНОВЛЕНИЯ 1: – tamilsweet
Я закончил тем, что переместил экземпляр экземпляра в свою собственную функцию, и теперь он работает. Проблема заключалась в том, что PHP copy() не похож на cp из оболочки, поскольку вторым аргументом должно быть имя файла ** в каталоге назначения **, а не только имя каталога. so path/to/file/filename.ext не просто путь/в/файл –