URL aus Custom Field dem Post als Beitragsbild zuweisen

Bei älteren WordPress-Versionen, bei denen es noch keine Beitragsbilder gegeben hat, wurden diese gern über die Eingabe der URL in Custom-Fields auf der Webseite angezeigt.

Dieses Script holt sich für jeden Post die URL aus dem Custom-Field und weißt es als Beitragsbild hinzu:
function postmeta_img_update() {
global $post;
// If Custom Post Meta Field for a Image/Thumnail Exists
if( get_post_meta($post->ID, "Thumbnail", true) ):

// Get Image Location and File Extention
$img = get_post_meta($post->ID, "Thumbnail", true);
$ext = substr(strrchr($img,'.'),1);

// WordPress Upload Directory to Copy to (must be CHMOD to 777)
$uploads = wp_upload_dir();
$copydir = $uploads['path']."/";

// Code to Copy Image to WordPress Upload Directory (Server Must Support file_get_content/fopen/fputs)
$data = file_get_contents($img);
$filetitle = strtolower(str_replace(array(' ', '-', '.', '(', ')', '!', '@', '#', '$', '%', '^', '&', '*', '_', '=', '+'), "-", get_the_title()));
$file = fopen($copydir . "$filetitle-$post->ID.$ext", "w+");
fputs($file, $data);
fclose($file);

// Insert Image to WordPress Media Libarby
$filepath = $uploads['path']."/$filetitle-$post->ID.$ext";

$wp_filetype = wp_check_filetype(basename($filepath), null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => get_the_title(),
'post_content' => 'Bild für '.get_the_title(),
'post_status' => 'inherit'
);

wp_insert_attachment( $attachment, $filepath, $post->ID);

// Get Attachment ID for Post
global $wpdb; $attachment_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_status = 'inherit' AND post_type='attachment' ORDER BY post_date DESC LIMIT 1");
// Attached Image as Featured Thumbnail in Post
update_post_meta($post->ID, "_thumbnail_id", $attachment_id);

// Removes Custom Meta Field Image URL. This stop this function running again for the updated post.
//delete_post_meta($post->ID, "Image URL");

endif;

}
add_action('the_post','postmeta_img_update');

0