make_clickable не работает с двоеточиями в WordPress

Я использую make_clickable в functions.php

add_filter( 'the_content', 'make_clickable', 12 );

но это не работает с URL с двоеточиями. Он делает кликабельный текст только перед двоеточием. Пример:

https://www.google.com.ua/search?q=los+angeles+automotive+stores&rlz=1C1CHZL_ruUA745UA745&tbs=lrf:!2m1!1e2!2m1!1e3!3sIAE,lf:1&tbm=lcl&ei=eZXnWZi1AuLA6ATJ9ojICg&start=0&sa=N&rllag=34020955,-118343579,8541&rlha=0&biw=1745&bih=885#rlfi=hd:;si:130388325671661058;mv:!1m3!1d118510.4446802296!2d-118.30250324999999!3d34.0113229!2m3!1f0!2f0!3f0!3m2!1i429!2i430!4f13.1

URL выше преобразует в HTML ссылку с этим URL:

https://www.google.com.ua/search?q=los+angeles+automotive+stores&rlz=1C1CHZL_ruUA745UA745&tbs=lrf

Что мне нужно сделать, чтобы это работало?

0

Решение

Я нашел пользовательскую функцию, которая разрешила мой вопрос. Я использовал код ниже:

function my_clickable_links( $text ) {
$patt = array(
'%\b(?<!href=[\'"])(?>https?://|www\.)([\p{L}\p{N}]+[\p{L}\p{N}\-]*\.(?:[\p{L}\p{N}\-]+\.)*[\p{L}\p{N}]{2,})(?::\d+)?(?:(?:(?:/[\p{L}\p{N}$_\.\+!\*\'\(\),\%;:@&=-]+)+|/)(?:\?[\p{L}\p{N}$_\.\+!\*\'\(\),\%;:@&=-]+)?(?:#[^\s\<\>]+)?)?(?![^<]*+</a>)%u',
'%\b(?<!http://)(?<!https://)([\p{L}\p{N}]+[\p{L}\p{N}\-]*\.(?:[\p{L}\p{N}\-]+\.)*(?:ru|com|net))(?::\d+)?(?:(?:(?:/[\p{L}\p{N}$_\.\+!\*\'\(\),\%;:@&=-]+)+|/)(?:\?[\p{L}\p{N}$_\.\+!\*\'\(\),\%;:@&=-]+)?(?:#[^\s\<\>]+)?|\b)(?![^<]*+</a>)%u'
);
$repl = array(
'<a href="$0">$1</a>',
'<a href="http://$0">$1</a>'
);
$text = preg_replace($patt, $repl, $text);
echo $text;
}
add_filter( 'the_content', 'my_clickable_links', 12 );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]