Как предотвратить появление апострофов и цитат в постоянных ссылках?


Я использую пользовательские постоянные ссылки "/%категория%/%имя сообщения%/". Всякий раз, когда заголовок сообщения содержит кавычки или апострофы, они появляются в URL-адресе.

Может кто-нибудь сказать мне, как предотвратить их появление в слизняке?

Я запускаю WordPress 3.0.4.

Author: user1462, 2011-02-03

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;
}
 5
Author: editor, 2011-02-03 17:37:41

Я видел, что есть несколько плагинов для решения этой проблемы. Проверьте Чистый URL-адрес , например:

Этот простой плагин WordPress используется при создании слага статьи (= название статьи, используемое в URL). Он удаляет все символы, кроме букв a-z, цифр и дефисов (-). Плагин запускается последним во всем процессе генерации URL-адресов, поэтому сначала выполняются все стандартные замены диакритических знаков и акцентов, а затем, если все еще какие-то странные персонажи присутствуют, они вырезаны.

 3
Author: Fernando Briano, 2011-02-03 17:02:40