Как предотвратить появление апострофов и цитат в постоянных ссылках?
Я использую пользовательские постоянные ссылки "/%категория%/%имя сообщения%/". Всякий раз, когда заголовок сообщения содержит кавычки или апострофы, они появляются в URL-адресе.
Может кто-нибудь сказать мне, как предотвратить их появление в слизняке?
Я запускаю WordPress 3.0.4.
2 answers
В WordPress "---" и "--" становятся тире (-—
), а "--" становится тире (-#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;
}
Я видел, что есть несколько плагинов для решения этой проблемы. Проверьте Чистый URL-адрес , например:
Этот простой плагин WordPress используется при создании слага статьи (= название статьи, используемое в URL). Он удаляет все символы, кроме букв a-z, цифр и дефисов (-). Плагин запускается последним во всем процессе генерации URL-адресов, поэтому сначала выполняются все стандартные замены диакритических знаков и акцентов, а затем, если все еще какие-то странные персонажи присутствуют, они вырезаны.