Intereting Posts
add_filter не работает Динамический контент и переписывать URL-адреса Множественные установки WordPress, которые разделяют WordPress & Theme, но с разделенной базой данных Добавить в корзину кнопка woocommerce фон и с не отображается правильно Поддерживает ли какая-либо тема детская тема? Как создать настраиваемый шаблон публикации для определенной категории сообщений? Правильный способ перенаправления имени пользователя Как отменить действие мусора внутри wp_trash_post Возможно ли получить идентификатор сообщения из двух разных настраиваемых циклов типов сообщений, встроенных в одну и ту же почту, для выполнения update_post_meta из интерфейса? add_rewrite_rule не регистрируется на Multisite Нужна помощь, чтобы получить функцию для работы Шаблон пользовательской таксономии WordPress не работает Проверка метаданных перед публикацией Каков правильный способ использования wp_enqueue_script / style? WordPress Insecure Content

Является ли функция форматирования sanitize_title_with_dys слишком либеральной (с точки зрения принятых символов)?

sanitize_title_with_dashes (см. код ниже для справки) – это функция, которую WordPress использует для форматирования «хороших» URL-адресов. Однако, вопреки заголовку комментария функции, он позволяет гораздо больше, чем буквенно-цифровые символы, подчеркивание (_) и тире (-). Он также допускает знаки типа ° и т. Д.

Как я могу действительно разрешить только буквенно-цифровые символы и тире?

 /** * Sanitizes title, replacing whitespace with dashes. * * Limits the output to alphanumeric characters, underscore (_) and dash (-). * Whitespace becomes a dash. * * @since 1.2.0 * * @param string $title The title to be sanitized. * @return string The sanitized title. */ function sanitize_title_with_dashes($title) { $title = strip_tags($title); // Preserve escaped octets. $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); // Remove percent signs that are not part of an octet. $title = str_replace('%', '', $title); // Restore octets. $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); $title = remove_accents($title); if (seems_utf8($title)) { if (function_exists('mb_strtolower')) { $title = mb_strtolower($title, 'UTF-8'); } $title = utf8_uri_encode($title, 200); } $title = strtolower($title); $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = str_replace('.', '-', $title); $title = preg_replace('/[^%a-z0-9 _-]/', '', $title); $title = preg_replace('/\s+/', '-', $title); $title = preg_replace('|-+|', '-', $title); $title = trim($title, '-'); return $title; } 

Рассмотрим эту функцию как грубый заполнитель. У него больше недостатков, чем вы могли себе представить … 🙂
Существует множество плагинов для улучшения преобразования для разных языков и потребностей. Вы можете посмотреть мой плагин Germanix, чтобы узнать, как это можно сделать.