# WP_STATICIZE_EMOJI() │ WP 4.2.0
Функция wp_staticize_emoji()
предназначена для преобразования эмодзи в статические изображения.
**Использует:** wp_encode_emoji()
**Время выполнения:** 1 раз — 0.000134 сек (быстро) | 50000 раз — 1.75 сек (быстро)
## Хуки из функции
- emoji_url
- emoji_ext
## Возвращаемое значение
Строка. Закодированный контент.
## Использование
```php
wp_staticize_emoji( $text );
Параметры
- $text (string) (обязательный) — Контент, который нужно закодировать.
Примеры
Пример преобразования текста с эмодзи:
echo wp_staticize_emoji('text ✈');
// Выведет:
// text 
Изменения
Функция была введена в версии 4.2.0.
WP_STATICIZE_EMOJI() WP STATICIZE EMOJI CODE WP 6.7.2
Расположение в коде: wp-includes/formatting.php
function wp_staticize_emoji( $text ) {
if ( ! str_contains( $text, '' ) ) {
if ( ( function_exists( 'mb_check_encoding' ) && mb_check_encoding( $text, 'ASCII' ) ) || ! preg_match( '/[^x00-x7F]/', $text ) ) {
// Текст не содержит эмодзи, возвращаем его без изменений.
return $text;
} else {
$encoded_text = wp_encode_emoji( $text );
if ( $encoded_text === $text ) {
return $encoded_text;
}
$text = $encoded_text;
}
}
$emoji = _wp_emoji_list( 'entities' );
// Подбираем эмодзи, которые потенциально могут быть в тексте.
$possible_emoji = array();
foreach ( $emoji as $emojum ) {
if ( str_contains( $text, $emojum ) ) {
$possible_emoji[ $emojum ] = html_entity_decode( $emojum );
}
}
if ( ! $possible_emoji ) {
return $text;
}
// URL для изображений эмодзи.
$cdn_url = apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/15.0.3/72x72/' );
// Расширение файлов изображений.
$ext = apply_filters( 'emoji_ext', '.png' );
$output = '';
// Разбиваем текст на части.
$textarr = preg_split( '/(<.*>)/U', $text, -1, PREG_SPLIT_DELIM_CAPTURE );
$stop = count( $textarr );
// Игнорируем определенные теги.
$tags_to_ignore = 'code|pre|style|script|textarea';
$ignore_block_element = '';
for ( $i = 0; $i < $stop; $i++ ) {
$content = $textarr[ $i ];
// Если находимся в игнорируемом блоке, ждем закрывающий тег.
if ( '' === $ignore_block_element && preg_match( '/^<(' . $tags_to_ignore . ')>/', $content, $matches ) ) {
$ignore_block_element = $matches[1];
}
// Если это не тег и не в игнорируемом блоке.
if ( '' === $ignore_block_element && strlen( $content ) > 0 && '<' !== $content[0] && str_contains( $content, '' ) ) {
foreach ( $possible_emoji as $emojum => $emoji_char ) {
if ( ! str_contains( $content, $emojum ) ) {
continue;
}
// Формируем имя файла для изображения.
$file = str_replace( ';', '-', $emojum );
$file = str_replace( array( '', ';' ), '', $file );
// Создаем HTML для эмодзи.
$entity = sprintf( '
', $cdn_url . $file . $ext, $emoji_char );
$content = str_replace( $emojum, $entity, $content );
}
}
// Проверяем, вышли ли из игнорируемого блока.
if ( '' !== $ignore_block_element && '' . $ignore_block_element . '>' === $content ) {
$ignore_block_element = '';
}
$output .= $content;
}
// Убираем лишние символы.
$output = str_replace( '️', '', $output );
return $output;
}
Связанные функции
- EMOJI
- wp_encode_emoji()