WordPress add Google Maps Image to Media Library Programmatically

72 Likes Comment

One of these days there was one task as in WordPress to add an image to the WordPress. Namely it was necessary to add a picture of Google Maps. The result is the following code, I think does not need comments.

<?php

$post_id = NULL; // Or Post ID 
$city = 'New York';
$image_url = 'https://maps.googleapis.com/maps/api/staticmap?'.
    'center='.urlencode($city).'&'.
    'zoom=7&'.
    'size=400x400&'.
    'maptype=roadmap&'.
    'key='.GOOGLE_MAP_KEY.'&'.
    'language=en&'.
    'region=US';
$image_name = sanitize_title($city).'.png';
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$unique_file_name = wp_unique_filename($upload_dir['path'], $image_name);
$filename = basename($unique_file_name);

if(wp_mkdir_p($upload_dir['path']))
    $file = $upload_dir['path'].'/'.$filename;
else
    $file = $upload_dir['basedir'].'/'.$filename;

file_put_contents($file, $image_data);

$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
    'guid' => $upload_dir['url'].'/'.basename($filename), 
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name($filename),
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment($attachment, $file, $post_id);
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);

?>

 

You might like

About the Author: Oleksandr Sovenko

Leave a Reply

Your email address will not be published. Required fields are marked *