❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.

Khi soạn thảo nội dung bài viết có chứa ký tự biểu cảm Emoji, một số trường hợp khi lưu vào bài viết sẽ gặp lỗi “Updating failed. Could not update post in the database” hoặc với tiếng Việt thì là “Cập nhật thất bài. Không thể lưu bài viết vào cơ sở dữ liệu“.

Lỗi không thể lưu bài viết khi nội dung có chứa Emoji

Nguyên nhân là do một số máy chủ Web Hosting/VPS cài đặt phần mềm MySQL/MariaDB sử dụng bảng mã utf8 nên Emoji sử dụng Unicode 4 byte sẽ không thể lưu vào. Vì vậy giải pháp ở đây là sẽ cần chuyển các biểu tượng emoji thành các ký tự HTML để có thể lưu vào cơ sở dữ liệu.

Để khắc phục, bạn sẽ cần chèn đoạn mã dưới đây vào tập tin functions.php của theme đang sử dụng trong WordPress:

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

Sau khi chèn đoạn trên, nội dung bài viết có chứa emoji sẽ sẽ được lưu bình thường.

Nếu bạn muốn có thể chèn emoji vào nhiều nơi hơn thì sử dụng đoạn mã dưới đây:

// Mã hóa emoji trước khi lưu bài viết hoặc trang
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 emoji trước khi lưu Site Title và Description 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 emoji khi tạo/sử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), bạn có thể hook vào update_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 );

Chúc các bạn thành công.

Chia sẻ:
Bài viết đã được kiểm duyệt bởi AZDIGI Team

Về tác giả

Thạch Phạm

Thạch Phạm

Đồng sáng lập và Giám đốc điều hành của AZDIGI. Có hơn 15 năm kinh nghiệm trong phổ biến kiến thức liên quan đến WordPress tại thachpham.com, phát triển website và phát triển hệ thống.

Hơn 10 năm phục vụ 80.000+ khách hàng

Bắt đầu dự án web của bạn với AZDIGI