在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;
}