Mục lục
Hướng dẫn áp dụng
Các bạn thêm đoạn mã sau vào functions.php.
/**
* Tự động chuyển bài viết mới của tác giả về trạng thái 'pending'.
*/
function set_post_status_to_pending($post_id, $post, $update) {
// Bỏ qua nếu là bản revision
if (wp_is_post_revision($post_id)) return;
// Chỉ xử lý khi là bài mới (không phải cập nhật)
if ($update) return;
// Kiểm tra người đăng bài là 'author'
$user = get_userdata($post->post_author);
if (in_array('author', (array) $user->roles)) {
// Nếu bài đang ở trạng thái 'publish', chuyển về 'pending'
if ($post->post_status === 'publish') {
// Tránh vòng lặp vô hạn bằng cách chỉ cập nhật nếu khác trạng thái
remove_action('wp_insert_post', __FUNCTION__, 10);
wp_update_post([
'ID' => $post_id,
'post_status' => 'pending'
]);
add_action('wp_insert_post', __FUNCTION__, 10, 3);
}
}
}
add_action('wp_insert_post', 'set_post_status_to_pending', 10, 3);
Ghi chú
- Đoạn mã này không ảnh hưởng đến các vai trò khác (admin, editor…)
- Bạn có thể thay author bằng quyền khác như contributor, editor nếu muốn áp dụng logic tương tự
- Đảm bảo plugin cache (nếu có) không lưu lại trạng thái sai sau khi cập nhật bài viết
Kết luận
Với vài dòng mã đơn giản, bạn đã có thể kiểm soát nội dung trước khi được xuất bản bởi các tài khoản Tác giả. Điều này đặc biệt hữu ích với các trang có nhiều cộng tác viên, giúp bạn kiểm duyệt nội dung hiệu quả hơn.
Chúc bạn thành công!
Bình luận