sanitize_title

Позволяет изменить санитизированную строку заголовка
Хук WordPress
INT 1.2.0
WordPress Icon

Описание хука

Хук «sanitize_title» позволяет определить и изменить строку заголовка после ее санитизации. Санитизация заголовка в WordPress включает удаление специальных символов, замену пробелов на дефисы и приведение строки к нижнему регистру. Хук «sanitize_title» предоставляет возможность модифицировать этот процесс санитизации, например, добавить или удалить дополнительные символы или изменить алгоритм преобразования.

Использование

apply_filters( 'sanitize_title', $title, $raw_title, $context );

Где:

  • $title (строка) — санитизированный заголовок.
  • $raw_title (строка) — заголовок до санитизации.
  • $context (строка) — контекст, для которого производится санитизация заголовка.
<?php
/**
 * Функция-обработчик для хука "sanitize_title".
 *
 * @param string $title       Санитизированный заголовок.
 * @param string $raw_title   Заголовок до санитизации.
 * @param string $context     Контекст, для которого производится санитизация заголовка.
 * @return string             Измененный заголовок.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Добавляем префикс к заголовку в контексте 'post'.
    if ( $context === 'post' ) {
        $title = 'post-' . $title;
    }
    // Возвращаем измененный заголовок.
    return $title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );
?>

В этом примере мы создаем функцию-обработчик «custom_sanitize_title», которая принимает три параметра: санитизированный заголовок, заголовок до санитизации и контекст санитизации. Внутри функции мы проверяем контекст и, если он равен ‘post’, добавляем префикс ‘post-‘ к заголовку. Затем мы возвращаем измененный заголовок. Функцию-обработчик затем добавляем в хук «sanitize_title» с приоритетом 10 и количеством параметров 3.

Примеры использования

Преобразование заголовка в URL-адрес


/**
 * Пример использования хука sanitize_title для преобразования заголовка в URL-адрес.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Преобразование заголовка в URL-адрес
    $sanitized_title = sanitize_title( $raw_title );
    
    return $sanitized_title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

В данном примере хук sanitize_title используется для преобразования заголовка в URL-адрес. Функция sanitize_title принимает необработанный заголовок и возвращает преобразованный заголовок, который может быть использован в URL-адресе. В данном примере мы определяем пользовательскую функцию custom_sanitize_title, которая вызывается при использовании хука sanitize_title. Внутри функции мы вызываем функцию sanitize_title и передаем ей необработанный заголовок. Затем мы возвращаем преобразованный заголовок.

Очистка заголовка от специальных символов


/**
 * Пример использования хука sanitize_title для очистки заголовка от специальных символов.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Очистка заголовка от специальных символов
    $sanitized_title = sanitize_title( $raw_title );
    
    return $sanitized_title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

В данном примере хук sanitize_title используется для очистки заголовка от специальных символов. Функция sanitize_title автоматически удаляет специальные символы из заголовка, чтобы он был безопасным для использования в URL-адресе. В данном примере мы определяем пользовательскую функцию custom_sanitize_title, которая вызывается при использовании хука sanitize_title. Внутри функции мы вызываем функцию sanitize_title и передаем ей необработанный заголовок. Затем мы возвращаем очищенный заголовок.

Удаление лишних пробелов в заголовке


/**
 * Пример использования хука sanitize_title для удаления лишних пробелов в заголовке.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Удаление лишних пробелов в заголовке
    $sanitized_title = sanitize_title( $raw_title );
    
    return $sanitized_title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

В данном примере хук sanitize_title используется для удаления лишних пробелов в заголовке. Функция sanitize_title автоматически удаляет все лишние пробелы из заголовка. В данном примере мы определяем пользовательскую функцию custom_sanitize_title, которая вызывается при использовании хука sanitize_title. Внутри функции мы вызываем функцию sanitize_title и передаем ей необработанный заголовок. Затем мы возвращаем заголовок без лишних пробелов.

Изменение регистра символов в заголовке


/**
 * Пример использования хука sanitize_title для изменения регистра символов в заголовке.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Изменение регистра символов в заголовке
    $sanitized_title = strtoupper( $raw_title );
    
    return $sanitized_title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

В данном примере хук sanitize_title используется для изменения регистра символов в заголовке. В данном примере мы используем функцию strtoupper, которая преобразует все символы заголовка в верхний регистр. В данном примере мы определяем пользовательскую функцию custom_sanitize_title, которая вызывается при использовании хука sanitize_title. Внутри функции мы вызываем функцию strtoupper и передаем ей необработанный заголовок. Затем мы возвращаем заголовок с измененным регистром символов.

Добавление контекста к заголовку


/**
 * Пример использования хука sanitize_title для добавления контекста к заголовку.
 */
function custom_sanitize_title( $title, $raw_title, $context ) {
    // Добавление контекста к заголовку
    $sanitized_title = $raw_title . ' (' . $context . ')';
    
    return $sanitized_title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

В данном примере хук sanitize_title используется для добавления контекста к заголовку. В данном примере мы просто добавляем значение переменной $context в конец заголовка в скобках. В данном примере мы определяем пользовательскую функцию custom_sanitize_title, которая вызывается при использовании хука sanitize_title. Внутри функции мы объединяем необработанный заголовок, значение переменной $context и строку в скобках. Затем мы возвращаем заголовок с добавленным контекстом.

Вопросы и ответы

Как изменить результат санитизации заголовка?

Для изменения результата санитизации заголовка можно использовать хук sanitize_title. Этот хук позволяет фильтровать строку санитизированного заголовка.

Пример использования хука sanitize_title:


function custom_sanitize_title( $title, $raw_title, $context ) {
    // Ваш код для изменения санитизированного заголовка
    return $title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

Как добавить дополнительные символы в список разрешенных в заголовке?

Для добавления дополнительных символов в список разрешенных в заголовке можно использовать хук sanitize_title. Этот хук позволяет изменять список разрешенных символов.

Пример использования хука sanitize_title для добавления символов:


function custom_sanitize_title( $title, $raw_title, $context ) {
    $title = str_replace( '_', '-', $title ); // Заменяем символ "_" на "-"
    return $title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

Как удалить определенные символы из заголовка перед санитизацией?

Для удаления определенных символов из заголовка перед санитизацией можно использовать хук sanitize_title. Этот хук позволяет изменять исходную строку заголовка перед санитизацией.

Пример использования хука sanitize_title для удаления символов:


function custom_sanitize_title( $title, $raw_title, $context ) {
    $title = str_replace( '!', '', $title ); // Удаляем символ "!"
    return $title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

Как изменить контекст санитизации заголовка?

Контекст санитизации заголовка может быть изменен с помощью хука sanitize_title. Этот хук позволяет определить контекст, в котором происходит санитизация заголовка.

Пример использования хука sanitize_title для изменения контекста:


function custom_sanitize_title( $title, $raw_title, $context ) {
    if ( $context === 'post' ) {
        // Код для санитизации заголовка в контексте поста
    } elseif ( $context === 'page' ) {
        // Код для санитизации заголовка в контексте страницы
    }
    return $title;
}
add_filter( 'sanitize_title', 'custom_sanitize_title', 10, 3 );

Как проверить, был ли заголовок изменен после санитизации?

Для проверки, был ли заголовок изменен после санитизации, можно использовать хук sanitize_title. Этот хук позволяет добавить пользовательский фильтр, который будет вызываться после санитизации заголовка.

Пример использования хука sanitize_title:


add_filter( 'sanitize_title', 'my_custom_sanitize_title', 10, 3 );
function my_custom_sanitize_title( $title, $raw_title, $context ) {
    // Проверяем, был ли заголовок изменен после санитизации
    if ( $title !== $raw_title ) {
        // Заголовок был изменен
        // Добавляем свою логику обработки
    } else {
        // Заголовок не был изменен
        // Добавляем свою логику обработки
    }
    return $title;
}

Как использовать хук sanitize_title для санитизации пользовательского ввода?

Хук sanitize_title можно использовать для санитизации пользовательского ввода перед сохранением его в базу данных. Это позволяет очистить заголовок от нежелательных символов и привести его к нужному формату.

Пример использования хука sanitize_title для санитизации пользовательского ввода:


add_filter( 'sanitize_title', 'my_custom_sanitize_title', 10, 3 );
function my_custom_sanitize_title( $title, $raw_title, $context ) {
    // Санитизация пользовательского ввода
    $sanitized_title = sanitize_title( $raw_title );
    return $sanitized_title;
}

Как добавить пользовательский фильтр для санитизации заголовка?

Для добавления пользовательского фильтра для санитизации заголовка можно использовать хук sanitize_title. Этот хук позволяет добавить свою функцию санитизации, которая будет вызываться при санитизации заголовка.

Пример добавления пользовательского фильтра для санитизации заголовка:


add_filter( 'sanitize_title', 'my_custom_sanitize_title', 10, 3 );
function my_custom_sanitize_title( $title, $raw_title, $context ) {
    // Добавляем свою логику санитизации заголовка
    $sanitized_title = my_custom_sanitize_function( $raw_title );
    return $sanitized_title;
}

Как обработать ошибки санитизации заголовка?

Для обработки ошибок санитизации заголовка можно использовать хук sanitize_title. В этом хуке можно добавить свою логику обработки ошибок и вернуть измененный заголовок или сообщение об ошибке.

Пример обработки ошибок санитизации заголовка:


add_filter( 'sanitize_title', 'my_custom_sanitize_title', 10, 3 );
function my_custom_sanitize_title( $title, $raw_title, $context ) {
    // Проверяем, есть ли ошибки санитизации заголовка
    if ( my_custom_sanitize_function( $raw_title ) === false ) {
        // Обрабатываем ошибку
        $error_message = 'Ошибка санитизации заголовка';
        // Выводим сообщение об ошибке
        wp_die( $error_message );
    }
    return $title;
}

Хук sanitize_title в WordPress позволяет фильтровать санитизированный заголовок. Он предоставляет возможность проверить, был ли заголовок изменен после санитизации, использовать хук для санитизации пользовательского ввода, добавить пользовательский фильтр для санитизации заголовка и обработать ошибки санитизации заголовка.

Связанные элементы

  • Функция sanitize_title(): очищает заголовок от нежелательных символов и форматирует его для использования в URL.
  • Функция sanitize_title_with_dashes(): очищает заголовок от нежелательных символов и заменяет пробелы на дефисы.
  • Функция sanitize_user(): очищает имя пользователя от нежелательных символов.
  • Функция sanitize_file_name(): очищает имя файла от нежелательных символов.
  • Хук sanitize_user: фильтрует очищенное имя пользователя.
  • Хук sanitize_file_name: фильтрует очищенное имя файла.
Обсуждение