如果我理解正确,您只想在links的href属性中更改wptexturize的行为。下面是我将如何解决这个问题:
不要弄乱wptexturize的默认行为,该函数用于许多不同的过滤器,其行为非常有用。而且绝对不要为这样一个简单的案件破解核心文件。。。这不是必须的,而且当你想升级或做任何事情的时候,它会让你头痛不已。
如果您需要对内容中链接的href属性进行URL编码的过滤器,我会使用urlencode
WordPress内置的功能。这还负责将空格转换为加号以及URL中的任何其他特殊情况。您只需确保在wptexturize过滤器出现之前应用它。我将其添加到优先级9,但任何低于10的优先级都可以。
add_filter( \'the_content\', \'replace_apostrophes_in_links\', 9 );
function replace_apostrophes_in_links( $text ) {
return preg_replace_callback(
\'/(<a[^>]*href=")([^"]*)(.*?>)/\',
create_function(
\'$matches\',
\'return $matches[1] . urlencode( $matches[2] ) . $matches[3];\' ),
$text );
}
一点解释。。。正则表达式将查找所有
<a>
内容中的标记。然后回调函数将对href属性进行URL编码,并返回结果。而且,由于此过滤器是在默认格式过滤器之前应用的,因此您的链接中不会留下任何单引号,WordPress将无法使用。