Hosting
Tên miền
Cloud
Máy chủ
EmailSSLFirewall Anti DDoSTối ưu tốc độ website

Nội dung

Hướng dẫn sửa lỗi lưu bài viết WordPress khi có ký tự Emoji

Ngày đăng:

09/12/2025

Cập nhật lần cuối:

09/12/2025

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.

Khi xuất hiện lỗi bạn sẽ nhận được thông báo như sau:

Thông báo lỗi khi có emoji
Thông báo lỗi khi có Emoji

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ý.

Thêm code trên Snippets
Thêm code trên Snippets
Kết quả sau khi chỉnh sửa
Kết quả sau khi chỉnh sửa

iconLư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/

VIETNIX

Đội ngũ tại Vietnix

Kết nối với mình qua

Vietnix thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, Vietnix đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.

Kết nối với mình qua

NHỮNG CÂU HỎI THƯỜNG GẶP VỀ DỊCH VỤ TẠI VIETNIX

Để có thể gửi ticket yêu cầu hỗ trợ đến các phòng ban của Vietnix, trước hết bạn cần đăng nhập vào hệ thống portal tại đường link: https://portal.vietnix.vn/.
Sau đó vào phần Hỗ trợ > Chọn Gửi yêu cầu > Lựa chọn phòng ban mà bạn muốn gửi yêu cầu > Nhập nội dung cần hỗ trợ và nhấn Gửi.

Chúng tôi sẽ tiếp nhận và phản hồi ngay khi nhận được yêu cầu từ Quý Khách Hàng. Bạn có thể xem hướng dẫn chi tiết cách gửi ticket tại đây.
Nếu bạn còn vấn đề gì thắc mắc, hãy liên hệ đến hotline 1800 1093 để được hỗ trợ giải đáp nhanh chóng.

Vietnix có riêng đội ngũ tư vấn và hỗ trợ kỹ thuật chuyên nghiệp giúp khách hàng giải quyết được các vấn đề phát sinh một cách nhanh gọn nhất, không làm ảnh hưởng đến hiệu suất công việc. Đội ngũ nhân viên của chúng tôi với kinh nghiệm và trình độ chuyên môn cao sẵn sàng hỗ trợ khách hàng 24/7, mang đến cho khách hàng trải nghiệm tốt nhất khi sử dụng dịch vụ tại Vietnix.

Đảm bảo an toàn và bảo mật thông tin của Quý khách hàng là nhiệm vụ Vietnix luôn đặt lên hàng đầu. Chúng tôi sẽ không xâm phạm vào thông tin và dữ liệu của khách hàng khi chưa được cho phép. Vietnix cam kết không chia sẻ thông tin khách hàng dưới bất kỳ hình thức nào cho bên thứ ba. Mọi hoạt động sẽ tuân thủ đúng pháp luật, điều khoản hợp đồng và Chính sách bảo mật thông tin của chúng tôi.

Vietnix có hệ thống các kênh liên lạc đa dạng giúp bạn dễ dàng kết nối được với chúng tôi. Bạn có thể liên hệ với Vietnix qua Fanpage Facebook, Livechat, Ticket, Email,… Ngoài ra, trong trường hợp cần hỗ trợ nhanh chóng, bạn có thể gọi đến hotline: 1800 1093 – 07 088 44444 để được giải quyết kịp thời.

Tại Vietnix, chúng tôi hỗ trợ việc hoàn tiền trong vòng 30 ngày kể từ khi dịch vụ của quý khách được kích hoạt trên hệ thống (không tính thời gian dùng thử dịch vụ), ngoại trừ các dịch vụ: Domain, SSL, License.

– Đối với các dịch vụ Hosting, VPS: Hoàn tiền 100% trong vòng 07 ngày kể từ ngày đăng ký dịch vụ. Sau 07 ngày hoàn lại số tiền tương ứng sau khi đã trừ đi số tiền dịch vụ đã được sử dụng theo ngày.

– Đối với các dịch vụ Server, Colocation: hoàn lại số tiền tương ứng sau khi đã trừ đi số tiền dịch vụ đã được sử dụng theo ngày.

Quý khách có thể xem nội dung chi tiết tại Chính sách hoàn tiền của Vietnix.

Xem tất cả câu hỏi