我在wordpress中有一个基于二十世纪的儿童主题。
我的一些作者在帖子标题中有硬编码的网址,我想删除这些网址。
我将以下代码放在子主题的functions.php
文件中,但它对帖子标题的显示没有影响:
add_filter( ‘the_title’, ‘ib_strip_tags_from_titles’ );
function ib_strip_tags_from_titles( $title ) {
$title = strip_tags( $title );
return $title;
}
有什么建议吗?
答案 0 :(得分:0)
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()
完成任务,我假设“已编码的网址”(如您所述)包含在<a [...] ></a>
标记中。如果不是这种情况,您需要一个与URL匹配的正则表达式。这更加棘手,取决于您的作者使用的URL是国际化/具有不同的域,并不仅仅是http://前言等等。
如果它们包含在标签中,我保证上述功能可以正常工作,如果没有,这个正则表达式会捕获大多数网址,但我无法保证在每种情况下工作:
(([A-Za-z]{3,9})://)?([-;:&=\+\$,\w]+@{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((/[-\+~%/\.\w]+)?/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?
你已经把它放在上面函数中的'/和/之间。