Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save vovadocent/972079881b828973763378db06bdf695 to your computer and use it in GitHub Desktop.
Save vovadocent/972079881b828973763378db06bdf695 to your computer and use it in GitHub Desktop.
Upload an image as media and attach it to some post if need
<?php
//// upload an image as media and attach it to some post if need ////
function upload_end_attach_image($image_url, $filename, $post_id = NULL) {
$upload_dir = wp_upload_dir(); // Set upload folder
$image_data = file_get_contents($image_url); // Get image data
// Check folder permission and define file location
// Check image file type
$wp_filetype = wp_check_filetype($image_url, null);
$filename .= ".{$wp_filetype['ext']}";
if (wp_mkdir_p($upload_dir['path'])) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
// Create the image file on the server
file_put_contents($file, $image_data);
// Set attachment data
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
// Create the attachment
$attach_id = wp_insert_attachment($attachment, $file /* , $post_id */);
// Include image.php
require_once(ABSPATH . 'wp-admin/includes/image.php');
// Define attachment metadata
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
// Assign metadata to attachment
wp_update_attachment_metadata($attach_id, $attach_data);
// And finally assign featured image to post
if($post_id)
set_post_thumbnail($post_id, $attach_id);
return $attach_id;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment