Функция SANITIZE_TITLE_WITH_DASHES() │ WP 1.2.0
Функция sanitize_title_with_dashes очищает заголовок, заменяя пробелы и некоторые другие символы на дефисы. Это полезно для того, чтобы заголовок выглядел более аккуратно и корректно для использования на веб-сайте.
Назначение функции
Функция:
- Удаляет нежелательные символы из заголовка.
- Заменяет пробелы на дефисы.
- Оставляет только буквы, цифры, символы подчеркивания (_) и дефисы (-).
Возвращаемое значение
Функция возвращает строку — очищенный заголовок.
Использование функции
Чтобы использовать функцию, необходимо передать ей три параметра:
sanitize_title_with_dashes( $title, $raw_title, $context );
Параметры:
- $title (string, обязательный): Заголовок, который нужно очистить.
- $raw_title (string): Этот параметр не используется, можно оставить пустым.
- $context (string): Указывает, для какой операции очищается строка. Если установить значение 'save', некоторые дополнительные символы преобразуются в дефисы или полностью удаляются. По умолчанию используется значение 'display'.
Пример использования:
echo sanitize_title_with_dashes("I'm in LOVE with WordPress!!!1 рус");
// Результат: im-in-love-with-wordpress1-%d1%80%d1%83%d1%81
Пример кода
Вот пример использования функции для добавления класса текущего дочернего сайта в WordPress Multisite:
add_filter( 'body_class', 'wpdocs_childSiteClass' );
function wpdocs_childSiteClass( $classes ) {
$site_title = sanitize_title_with_dashes( get_bloginfo( 'name' ) );
$classes[] = 'website-' . $site_title;
return $classes;
}
Изменения
Функция была введена в версии 1.2.0.
Код функции
Вот код самой функции sanitize_title_with_dashes, который отвечает за очистку заголовка:
function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'display' ) {
$title = strip_tags( $title );
// Сохраняем закодированные восьмеричные символы.
$title = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title );
// Убираем символы '%' которые не часть восьмеричных символов.
$title = str_replace( '%', '', $title );
// Восстанавливаем восьмеричные символы.
$title = preg_replace( '|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $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 );
if ( 'save' === $context ) {
// Преобразуем некоторые HTML-сущности в дефисы.
$title = str_replace( array( '%c2%a0', '%e2%80%93', '%e2%80%94' ), '-', $title );
// Удаляем определённые символы.
$title = str_replace(
array(
'%c2%ad', // Мягкие дефисы.
'%c2%a1', // Символ восклицания.
'%c2%bf', // Символ вопроса.
'%c2%ab', // Угловые кавычки.
'%c2%bb', // Угловые кавычки.
// и другие...
),
'',
$title
);
// Преобразуем непросмотримые символы в дефисы.
$title = str_replace(
array(
'%e2%80%80', // En quad.
'%e2%80%81', // Em quad.
// и другие...
),
'-',
$title
);
// Убираем HTML-сущности.
$title = preg_replace( '/&.+?;/', '', $title );
$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;
}
Заключение
Функция sanitize_title_with_dashes является важным инструментом для работы с заголовками в WordPress. Она помогает сделать заголовки более чистыми и удобными для восприятия. Если вы хотите создать правильные URL или заголовки для ваших записей, обязательно используйте эту функцию.