SEO продвижение, изготовление сайтов, Интернет-маркетинг

WordPress: Ошибка обновления. Не удалось обновить запись в базе данных

Недавно я столкнулся с неприятностью — мой веб-сайт перестал функционировать должным образом. Обратившись в службу поддержки, я получил объяснение: используемая тема оформления оказалась безнадежно устаревшей и несовместимой с текущей версией сервера.

Специалисты техподдержки пояснили суть проблемы: используемая тема требовала устаревшей функции MySQL, которая не поддерживается в версиях PHP выше 8.2. Более того, сама CMS оказалась несовместимой с PHP 8.2 , что создавало замкнутый круг проблем.

Для решения ситуации требовалось обновление темы сайта с внедрением поддержки mysqli. По данному вопросу рекомендовалось обратиться к разработчику темы.

Приняв решение о смене темы, я установил новый шаблон и приступил к его настройке. Однако вскоре столкнулся с новой трудностью: некоторые старые публикации невозможно было отредактировать. При попытке сохранения WordPress выдавал ошибку: «Ошибка обновления. Не удалось обновить запись в базе данных».

После продолжительных поисков решения проблемы я обнаружил закономерность: ошибка возникала исключительно в публикациях, содержащих эмодзи. Удаление эмодзи из текста позволяло сохранить изменения, но такой подход не казался оптимальным.

К счастью, удалось найти более изящное решение проблемы, не требующее потери визуального оформления контента.

Открываем:

ваш домен → wp-content → themes → название вашей темы → functions.php

И вставляем туда:

add_filter( 'wp_insert_post_data', function( $data, $postarr ) {
if ( ! empty( $data['post_content'] ) ) {
    $data['post_content'] = wp_encode_emoji( $data['post_content'] );
}
return $data;
}, 99, 2 );

Готово, вы восхитительны, вордпресс научился сохранять посты с эмодзи.