Tôi đang viết một plugin sẽ kiểm duyệt tất cả các bài đăng bất kể người dùng đã đăng chúng ở cấp độ nào. Nó sẽ kiểm tra nội dung bài đăng và tiêu đề đối với một danh sách các từ và nếu có trong bài đăng, tôi muốn đặt bài đăng trong hàng kiểm duyệt như thể nó được đăng bởi một người đóng góp. Phần này hoạt động tốt, nhưng tôi cũng muốn nó tự động xóa bài viết với những từ thực sự xấu. Đây là cách tôi hiện có nó:
function filter_handler( $data , $postarr ) {
// Get vars from data
$content = $data['post_content'];
$title = $data['post_title'];
// Array of words that will hold a post for aproval
$badWords = array(
"link=", "content-type", "bcc:", "cc:", "document.cookie",
"onclick", "onload", "javascript"
);
$reallyBadWords = array(
"query", "pluginTesting"
);
// If bad words exist in post, set post_status to pending
foreach ( $badWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data['post_status'] = "pending";
}
}
// If really bad words exist, delete post
foreach ( $reallyBadWords as $word ) {
if (
strpos( strtolower( $content ), strtolower( $word ) ) ||
strpos( strtolower( $title ), strtolower( $word ) )
) {
$data['post_status'] = 'trash';
}
}
return $data;
}
add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 );
Điều này hoạt động cho các từ thông thường nhưng đòi hỏi hai từ thực sự xấu để đặt một bài đăng vào thùng rác. Cũng sử dụng phương pháp này, khi người dùng xuất bản một bài viết với những từ thực sự xấu, họ sẽ được chuyển đến một trang lỗi cho họ biết họ không được phép chỉnh sửa bài đăng trong thùng rác.
Điều gì sẽ là một cách tốt để khắc phục điều này để nó đưa người dùng quay lại trang bài đăng và hiển thị thông báo lỗi thông báo cho họ rằng bài đăng của họ đã bị xóa?
Ngoài ra, làm thế nào tôi có thể sửa chữa thực tế rằng nó đòi hỏi hai từ thực sự xấu trước khi xóa?