без живого вордпресса сложно отдебажить, но IDE сразу дает замечания по ряду моментов:
//$id = $matches[1]
// Запрос в БД
$query = 'select smallURL from Images where id = ' .(int)$id;
Переменной $id тут неоткуда взяться, расскоментируйте //$id = $matches[1] .
Второе:
Переменной $con не существует в рамках области видимости этой функции, надо передать ее как аргумент функции replace_text (я так понимаю $con - это коннекшн к базе, но я не помню где и как он в вордпрессе):
function replace_text($text, $con) {
//остальной код
$result_image = mysqli_query($con, $query);
Третье:
Два return'а подряд не имеют смысла - они в одной ветке кода. Если надо вернуть и $text, и $text_image - верните массив:
//неправильно
return $text;
return $text_image;
//правильно:
return ['text' => $text, 'text_image' => $text_image];
Чтобы вылавливать синтаксические ошибки - включайте
отображение ошибок в php, чтобы вылавливать логические ошибки - используйте функции var_dump($var) и die().