Ваша функция:
1. Принимает строку с текстом в котором потенциально может быть картинка.
2. Берёт картинку если она подцеплена к полю "meta_social_image".
3. Разбирает строку из первого пункта, если находит в ней картинку то берёт из базы данных её ID.
4. Если картинки в тексте нет, то берёт какую-то стандартную картинку из "zm_social_image".
5. Возвращает или ID из текста или ID из "zm_social_image", при этом"meta_social_image" давно забыта.
Думаю, что в вашем случае, если картинка подцеплена к "meta_social_image", дальше ничего делать не надо: возвращаем её ID и выходим из функции. То есть выглядеть это будет так:
$fn__get_thumb_id_from_text = function( $text ){
global $post;
$meta_social_image = get_post_meta($post->ID, 'meta_social_image', true);
if ( $meta_social_image ) {
return $meta_social_image; // Всё, картинка есть, заканчиваем
}
if( preg_match( '/<img +src *= *[\'"]([^\'"]+)[\'"]/', $text, $mm ) &&
( $mm[1]{0} === '/' || strpos($mm[1], $_SERVER['HTTP_HOST']) ) ){
$name = basename( $mm[1] );
$name = preg_replace('~-[0-9]+x[0-9]+(?=\..{2,6})~', '', $name ); // удалим размер (-80x80)
$name = preg_replace('~\.[^.]+$~', '', $name ); // удалим расширение
$name = sanitize_title( sanitize_file_name( $name ) ); // приведем к стандартному виду
global $wpdb;
$thumb_id = $wpdb->get_var(
$wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = 'attachment'", $name )
);
} else {
$zm_social_image = get_theme_mod('zm_social_image');
$thumb_id = $zm_social_image;
}
return empty($thumb_id) ? 0 : $thumb_id;
};