Очистка заголовка с помощью функции SANITIZE_TITLE_WITH_DASHES() в WordPress.

Функция 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 или заголовки для ваших записей, обязательно используйте эту функцию.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *