strip_tags()
удаляет только теги HTML - в вашем случае это изменит название с
Some Text <a href="http://someurl.com">LINK</a> Other Text
до Some Text LINK Other Text
Если я вас правильно понимаю, это то, что вы хотите:
function ib_remove_links_from_titles($title) {
$title = preg_replace('/<a([^<]*)">([^<]*)<\/a>/', '', $title);
return $title;
}
add_filter( 'the_title', 'ib_remove_links_from_titles' );
в соответствии с приведенным выше примером будет выдано Some Text Other Text
Обратите внимание, что, учитывая, что вы пытались выполнить задачу с помощью strip_tags()
, я предполагаю, что "зашифрованные URL", как вы их описали, заключены в теги <a [...] ></a>
. Если это не так, вам нужно регулярное выражение, соответствующее URL. Это гораздо сложнее, в зависимости от того, являются ли URL-адреса, используемые вашими авторами, интернационализированными / имеют разные домены, а не только http: // prefaced и т. Д.
Я гарантирую, что вышесказанное сработает, если они заключены в теги, если нет, то это регулярное выражение будет перехватывать большинство URL-адресов, но без моей гарантии работает в каждом случае:
(([A-Za-z]{3,9})://)?([-;:&=\+\$,\w]+@{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((/[-\+~%/\.\w]+)?/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?
Вы бы поместили это между '/ и /' в вышеуказанной функции.