如何防止永久链接中出现撇号和引号?

时间:2011-02-03 作者:user1462

我正在使用自定义永久链接“/%category%/%postname%/”。每当帖子标题包含引号或撇号时,它们都会出现在URL中。

有人能告诉我如何防止它们出现在鼻涕虫中吗?

我正在运行WordPress 3.0.4。

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

在WordPress中,“--”和“-”变成em破折号(—;—) 并且“-”变成一个短划线(—;#8212;). 这个sanitize_title_with_dashes() 函数无法捕获这些。

该函数使用基于数据库的副本,但显示给用户的标题始终通过纹理化函数。因此,如果我们在进入数据库的过程中替换en/em破折号,最终结果将是相同的,并且避免了这些糟糕的URL情况,标题将被重新纹理化。

add_action( \'title_save_pre\', \'do_replace_dashes\' );
function do_replace_dashes($string_to_clean) {
    # The html entities (–  and —) don’t actually work but I include them for kicks and giggles. 
    $string_to_clean = str_replace( array(\'—\', \'—\', \'–\', \'–\', \'‚\', \'„\', \'“\', \'”\', \'’\', \'‘\', \'…\'), array(\' -- \',\' -- \', \'--\',\'--\', \',\', \',,\', \'"\', \'"\', "\'", "\'", \'...\'), $string_to_clean );
    return $string_to_clean;
}

SO网友:Fernando Briano

我看到有一些插件可以解决这个问题。检查Clean URL 例如:

这个简单的WordPress插件用于生成文章slug(=URL中使用的文章名称)。它删除除字母a-z、数字和连字符(-)以外的所有字符。该插件作为整个url生成过程中的最后一个插件运行,因此首先执行所有变音符号和重音符号的标准替换,然后,如果仍然存在一些奇怪的字符,则将其删除。

结束

相关推荐

Encoding Method for URLs?

WordPress是否有一种编码URL的方法或API,类似于在URL中使用标题时生成部分URL的方式?我正在编写一个生成URL的插件,并希望使用与其他所有插件相同的方法。例如,我在标题中键入“这是我的博客文章”,然后生成“这是我的博客文章”。