如何删除过滤器撇号和单引号

时间:2011-11-06 作者:yuli chika

我的wp版本是3.2.1

在wordpress中apostrophe/single quotation 将转移到'

我最好转到%27;

我试图编辑formatting.php, 直列式:

$string = str_replace( "\'", \''\', $string );$url = str_replace( "\'", \''\', $url );, 但没有效果。那么怎么做呢?或者如果可能的话,我想添加一些remove_filter function 在里面theme\'s funciton.php 更好。

(Note: 仅传输apostrophe/single quotation, 但保留其他报价格式。)

BTW: 如果我做了这个改变,我的wordpress安全吗?这也是我关心的。谢谢

1 个回复
最合适的回答,由SO网友:goldenapples 整理而成

如果我理解正确,您只想在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将无法使用。

结束

相关推荐

Similar posts formatting

我正在使用类似的帖子插件http://wordpress.org/extend/plugins/similar-posts/, 我希望类似的帖子显示在同一行,而不是列表。。。如链路1、链路2、链路3、链路4而不是链接1链接2链接3链接4几天前,我在wordpress论坛和插件的官方网站上发布了这篇文章,但仍然没有答案。。。救救我!(我对编码知之甚少,所以请尽量具体,如果你给我代码,请解释每一行的作用,以便我可以学习)谢谢补充信息:我正在使用插件的大部分默认设置,我认为我所做的唯一更改是将其设置为只考虑标签