Khi soạn bài viết có chứa Emoji và nhấn lưu, bạn có thể gặp lỗi “Published failed” do WordPress không thể ghi dữ liệu vào cơ sở dữ liệu. Sự cố này làm gián đoạn quá trình xuất bản nội dung và khiến bạn khó tiếp tục chỉnh sửa hoặc đăng bài đúng thời điểm. Bài viết này sẽ hướng dẫn bạn cách sửa lỗi lưu bài viết WordPress khi có ký tự Emoji để quá trình lưu bài viết ổn định và không còn báo lỗi.
Các cách khắc phục lỗi lưu bài viết WordPress khi có ký tự Emoji
Khi xuất hiện lỗi bạn sẽ nhận được thông báo như sau:

1. Cách sửa lỗi cơ bản (chỉ mã hóa nội dung bài viết)
Bạn thêm đoạn code sau vào file functions.php của theme (hoặc trong plugin snippets nếu bạn dùng plugin quản lý code):
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 );Khi soạn bài có Emoji, đoạn code sẽ tự động mã hóa Emoji trong post_content trước khi lưu. Nhờ vậy, database không phải lưu trực tiếp ký tự 4-byte, tránh lỗi “Incorrect string value …”.
2. Mã hóa rộng hơn (tiêu đề, đoạn trích, taxonomy, meta…)
Để Emoji ở nhiều nơi (title, excerpt, tên hạng mục, custom fields) cũng được mã hóa, gợi ý mở rộng như sau:
// Mã hóa nội dung chính, tiêu đề, excerpt
add_filter( 'wp_insert_post_data', function( $data, $postarr ) {
if ( ! empty( $data['post_content'] ) ) {
$data['post_content'] = wp_encode_emoji( $data['post_content'] );
}
if ( ! empty( $data['post_title'] ) ) {
$data['post_title'] = wp_encode_emoji( $data['post_title'] );
}
if ( ! empty( $data['post_excerpt'] ) ) {
$data['post_excerpt'] = wp_encode_emoji( $data['post_excerpt'] );
}
return $data;
}, 99, 2 );
// Mã hóa tên site, mô tả site
add_filter( 'pre_update_option_blogname', 'encode_emoji_for_options', 10, 2 );
add_filter( 'pre_update_option_blogdescription', 'encode_emoji_for_options', 10, 2 );
function encode_emoji_for_options( $new_value, $old_value ) {
return is_string( $new_value ) ? wp_encode_emoji( $new_value ) : $new_value;
}
// Mã hóa taxonomy (category, tag)
add_filter( 'pre_insert_term', function( $term ) {
return is_string( $term ) ? wp_encode_emoji( $term ) : $term;
}, 10, 1 );
add_filter( 'pre_update_term', function( $term ) {
return is_string( $term ) ? wp_encode_emoji( $term ) : $term;
}, 10, 1 );
// Nếu dùng custom fields / post meta
add_filter( 'update_post_metadata', function( $check, $object_id, $meta_key, $meta_value ) {
if ( is_string( $meta_value ) ) {
return wp_encode_emoji( $meta_value );
}
return $meta_value;
}, 10, 4 );Đoạn code này đảm bảo rằng hầu hết các nơi mà bạn có thể dùng Emoji đều sẽ được “encode” trước khi lưu. Bạn chỉ nên thêm các filter này vào child theme hoặc plugin riêng, để khi cập nhật theme không bị ghi đè.
3. Sử dụng plugin Code Snippets để chèn code dễ hơn
Nếu không thể sửa trực tiếp file functions.php, bạn có thể:
- Cài plugin Code Snippets (plugin chuyên dụng để thêm đoạn code nhỏ vào site WordPress).
- Tạo snippet mới, bạn dán đoạn code (ở phần 2) vào đó, đặt tên như “Fix Emoji Save”.
- Kích hoạt snippet đó.
- Kiểm tra xem bạn có thể lưu bài chứa Emoji không.
Điều này giúp bạn không phải can thiệp vào file theme và dễ quản lý.


Lưu ý
- Trước khi thao tác trên cơ sở dữ liệu, luôn sao lưu (backup) toàn bộ website và database để tránh mất dữ liệu.
- Sau khi khắc phục lỗi, bạn nên kiểm tra lại bằng cách chèn Emoji thử vào bài viết để đảm bảo website đã hoạt động ổn định.
Tóm lại, việc không lưu được bài viết có chứa Emoji chủ yếu xuất phát từ giới hạn mã hóa của cơ sở dữ liệu, khiến WordPress không thể xử lý biểu tượng cảm xúc. Nếu bạn không muốn chỉnh sửa database, bạn vẫn có thể khắc phục bằng cách thêm đoạn code hỗ trợ hoặc dùng plugin để tự động loại bỏ hoặc chuyển đổi Emoji trước khi lưu. Đây là giải pháp đơn giản, an toàn và giúp bạn tiếp tục đăng bài bình thường mà không phải thay đổi cấu trúc hệ thống.
VIETNIX – DỊCH VỤ HOSTING, VPS TỐC ĐỘ CAO, ỔN ĐỊNH, BẢO MẬT
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
- Điện thoại: 1800 1093
- Email liên hệ: sales@vietnix.com.vn
- Website: https://vietnix.vn/

