How do I set the first gallery image from a custom post type gallery field as the featured image?
I found another post similar to this but it is not for a custom post type. This is the code I’m assuming only for a normal post:
function set_featured_image_from_gallery() {
global $post;
$post_id = $post->ID;
$has_thumbnail = get_the_post_thumbnail($post_id);
if ( !$has_thumbnail ) {
$images = get_field('model_gallery', $post_id, false);
$image_id = $images[0];
if ( $image_id ) {
set_post_thumbnail( $post_id, $image_id );
}
}
}
add_action( 'save_post_property', 'set_featured_image_from_gallery' );
I have a custom post type named “models” that has a gallery field named “models_gallery”
I want to automatically set the first image from the gallery field to also be the featured image for the post.
That will work for a custom post type. It’s based on the post ID and the field name.
For some reason the code did not work. I did find the following code that did work.
add_action('acf/save_post', 'flex_FeaturedImageSetByACF', 50);
function flex_FeaturedImageSetByACF() {
$current_screen = get_current_screen(); // Current admin screen needed to identify the current cpt
$current_cpt_name = 'models'; // Current cpt name
$current_cpt_support = 'thumbnail'; // We want to check if the CPT supports this feature
global $post;
$post_id = ( $post->ID ); // Current post ID
$post_gallery_field = get_field('model_gallery', $post_id ); // ACF field
if ( !empty( $post_id ) ) {
if ( isset( $post_gallery_field['0'] ) ) {
$post_image_id = $post_gallery_field['0']['id']; // ACF image filed ID
$post_image_url = $post_gallery_field['0']['url']; // ACF image filed URL
// If current cpt supports thumbnails/featured images
if ( post_type_supports( $current_cpt_name, $current_cpt_support ) ) {
if ( ( $post_image_url ) AND ( ( $post_image_url ) != ( get_the_post_thumbnail() ) ) ) {
update_post_meta($post_id, '_thumbnail_id', $post_image_id);
}
}
} else {
update_post_meta( $post_id, '_thumbnail_id', 0 );
}
}
}
This looks amazing. Any thoughts on how this could be utilized as a mu-plugin?
Thanks for any help.