Пользуюсь flamingo для протоколирования отправленных данных через Contact Form 7. Очень не удобно, что ссылки и сохраненные файлы выводятся как plain text. Но, мы это сейчас исправим!
Поля flamingo выводит через функцию форматирования, которая вызывает фильтрацию по токену flamingo_htmlize. Вот туда то мы и вклиним наш код.
Требуется обернуть текстовые ссылки в их html код.
1 2 3 4 5 6 7 |
add_filter('flamingo_htmlize', function($text, $val) { if (strpos($text, '</a>') !== false) return $text; return preg_replace_callback('/(http[s]?\:\/\/[^\s<]{4,})\s{0,}/ims', function($m) { return '<a href="' . $m[1]. '" target="_blank">' . $m[1] . '</a>'; }, $text); }, 1, 2); |
Используем не сложную регулярку для замены. Важный нюанс заключается в том, что фильтр вызывается как минимум дважды — сначала для каждого атомарного значения поля, если их несколько, а потом для всего поля в целом.
Потому я проверяю, нет ли уже ссылок в строке $text.