Именно!
В WP вообще принято называть the_* функции, которые выводят (echo) и get_* - которые возвращают.
Думаю, что нужна get_sub_field(). И хорошо бы не забыть вывести полученный результат.
Что-то должно делаться всё равно. Функция возвращает значение, вы с этим значением должны что-то сделать - вывести на экран, сохранить в переменную и т.п. Сейчас вы его просто игнорируете, поэтому вам и кажется, что "не работает preg_replace".
Пробуйте что-то другое, значит.
Иного ответа вы не получите - результат выполнения функции вам нужно использовать, а не выполнять её вхолостую.
Ну или код покажите весь, мы вам подскажем, как сделать правильно.