I’m trying to migrate a site to WP. We have a whole bunch of pictures, and I have done some research and figured — I think — my best bet is a CSV import of the data, storing the relative URL of the image as a custom field.
So, I found this –which looks ideal — and I implemented it thus (in functions.php with a global call added as I was getting a ‘no object’ error):
function store_cf_featured_image() {
global $post,$wpdb;
$uploads = wp_upload_dir();
// Get all attachment IDs and filenames
$results = $wpdb->get_results("SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file'");
// Create an 'index' of attachment IDs and their filenames
$attachments = array();
foreach ($results as $row)
$attachments[ intval($row->post_id) ] = $row->meta_value;
// Get all featured images
$images = $wpdb->get_results("SELECT post_id, meta_value AS 'url' FROM $wpdb->postmeta WHERE meta_key = 'featured_image'");
// Loop over each image and try and find attachment post
foreach ($images as $image) {
if (preg_match('#^https?://#', $image->url))
$image->url = str_replace($uploads['baseurl'], '', $image->url); // get relative URL if absolute
$filename = ltrim($image->url, '/');
if ($attachment_ID = array_search($filename, $attachments)) {
// found attachment, set post thumbnail and delete featured image
update_post_meta($image->post_id, '_thumbnail_id', $attachment_ID);
delete_post_meta($image->post_ID, 'featured_image');
}
}
}
add_action( 'init', 'store_cf_featured_image' );
However, when I put a link in my custom field ‘featured_image’, and save it… nothing. No errors, but no nothing. I update the post and come back to it, but the link is still just a link the the custom field and no ‘featured image’ has been set.
Does anyone have any ideas what the issue might be? an am I right in thinking this will store the image as part of built in ‘Media Library’, now?
AlsoAlso: Will I be able to adapt this code to pull in Alt text etc for each image from custom fields.
Any input greatly appreciated! Thanks.
so you’re images are already in a custom field?
you could use the Get the Image plugin…. i know it will pull your thumbnail from a custom field and i think it might automatically set it as the featured image, tho it has been a while and i’m not sure of that.
http://wordpress.org/extend/plugins/get-the-image/