“Thumbnails” or “Featured” images are attachments with an entry in the $wpdb->postmeta
table under the key _thumbnail_id
. A couple of different action hooks run when entries are added to postmeta. I think that probably the one you want is updated_{$meta_type}_meta
. In your case, updated_post_meta
. Something like this:
add_action(
'updated_post_meta',
function ($meta_id, $object_id, $meta_key, $_meta_value ) {
if ('_thumbnail_id' == $meta_key) {
// take a good look around
// var_dump($meta_id, $object_id, $meta_key, $_meta_value );
// die;
}
},
1,4
);
Your script would run where that commented section is. I have no idea how that script works, but there are the WordPress components.
In your pastebin code, which I trust you will be editing into the question as you should, you are using this code:
$old_featured_image = wp_get_attachment_url( get_post_thumbnail_id( $post->ID ) );
$post
is not set in your function. That line will fail. But you are going a long way around anyway. wp_get_attachment_url
requires a thumbnail ID. That ID is passed into the filter as $_meta_value
. That line only needs to be:
$old_featured_image = wp_get_attachment_url( $_meta_value );
I can’t swear the rest of the function will work after that change but I am always concerned when I see exec
.