Contact Form 7 (CF7) là một plugin form liên hệ phổ biến trên WordPress. Đây là một plugin tuyệt vời, miễn phí mà mạnh mẽ. Tuy nhiên, gần đây nhiều người dùng than phiền về lỗi 404 liên quan đến CF7. Đó chính là vấn đề Refill của Contact Form 4.

Hình ảnh trên là của một website mình đang quản lý. Sau khi update plugin, mình nhận được hàng ngàn lỗi refill gây ra các link 404.
Trong đó đa phần có dạng:
contact-form-7/v1/contact-forms/ID/refill
Sau khi tìm hiểu, thì mình đã xử lý được nó rồi. Cùng xem nguyên nhân và cách khắc phục dưới đây nhé.
Nguyên Nhân gây ra Refill
Năm 2018, nhà phát hành đã thêm một tính năng nhằm cải thiện hiệu năng của CF7 là tạo bộ nhớ đệm (cache). Nhất là đối với các mã captcha xác thực hình ảnh. Giúp người nhùng không bị làm phiền qua nhiều khi submit thông tin. Chức năng nạp lại thực sự là một bản sửa lỗi khá thông minh.
Tuy nhiên, với một vài công cụ ngăn chạn spam như Akismet, nó có thể bị lỗi đối với một số trang web.
Hơn nữa, nếu bạn không sử dụng chức năng captcha nhưng bạn đang lưu vào bộ nhớ đệm các trang của mình, lệnh gọi này sẽ tải nhiều lần trên mỗi lần tải. Điều này có thể gây tốn tài nguyên máy chủ web của bạn.
Cách khắc phục
Để khắc phục vấn dề này rất đơn giản. Tôi sẽ chỉ cho bạn 02 cách để fix nó nhé. Bạn có thể làm theo 1 trong hai cách sau.
Cách 1. Sử dụng mã Script
Để tắt tính năng refill của Contact Form 7, bạn có thể chèn mã script sau vào đầu hoạc chân trang web, nơi nào bạn cảm thấy phù hợp và có thể chạy được nó.
<script>wpcf7.cached = 0;</script>
Đoạn mã nhỏ này cho CF7 biết rằng trang “X” không được lưu trong bộ nhớ cache, vì vậy nó không cần tải chức năng Refill. Chỉ cần đảm bảo rằng bạn đang tải nội dung này ở chân trang của mình và nó sẽ hoạt động mà không gặp trở ngại nào.
Lưu ý: Sau khi thêm mã, bạn sẽ cần xóa bộ nhớ cache của mình.
Cách 2. Loại bỏ trong code plugin
NGoài cách sử dụng cript bên trên để tắt tính năng đó (thực ra là đánh lừa CF7). Bạn có thể can thiệp trực tiếp vào code của CF7 để loại bỏ tính năng này.
Tìm đến đường dẫn sau:
WP-Content > Plugins > Contact Form 7 > Includes > controller.php
Tìm và xóa đoạn mã sau:
if ( defined( 'WP_CACHE' ) && WP_CACHE ) { $wpcf7['cached'] = 1;
}
Sau đó hãy lưu lại là xong.
Nếu website sử dụng cached, nhất là cache PHP (opcache chẳng hạn) đừng quên xóa cache nhé.
Nhưng mỗi khi CF7 Update, bạn có thể sẽ phải quay lại để xóa đoạn mã trên nhé. Hãy lưu lại bài viết này, để lần sau fix đỡ phải tìm ;D
Tóm lại
Contact Form 7 là một plugin đáng dùng. Nó nhẹ, không có nhiều CSS, Không có nhiều JS hay code php nặng. Mọi tính năng cơ bản, dễ cho dev phát triển theo ý của mình.
Tuy nhiên, hãy cố gắng update lên các bản cập nhật mới nhất để có hiệu năng tốt, fix các lỗi xảy ra.
Nếu cần hỗ trợ vấn đề nào, hãy comment bên dưới nhé.