How can a shortcode can take the place of the featured image in a post?
Apparently you are simply not translating your logic into code: if it has shortcode, do this, if not has shortcode but has thumbnail, do that, otherwise, do something else. if ( wpsite_has_topwide_shortcode() ) { echo ‘shortcode’; } elseif( has_post_thumbnail() ) { echo get_the_post_thumbnail( $post->ID, ‘full’ ); } else { echo ‘Hello World’; }