The comment_{$new_status}_{$comment->comment_type} WordPress PHP action fires when the status of a specific comment type is in transition.
Usage
add_action('comment_{$new_status}_{$comment->comment_type}', 'your_custom_function', 10, 2); function your_custom_function($comment_id, $comment) { // your custom code here }
Parameters
- $comment_id: string – The comment ID as a numeric string.
- $comment: WP_Comment – Comment object.
More information
See WordPress Developer Resources: comment_{$new_status}_{$comment->comment_type}
Examples
Notify author when their comment is approved
Send an email to the author when their comment is approved.
add_action('comment_approved_comment', 'notify_author_on_approval', 10, 2); function notify_author_on_approval($comment_id, $comment) { $author_email = $comment->comment_author_email; $subject = 'Your comment has been approved'; $message = 'Congratulations! Your comment has been approved on our website.'; wp_mail($author_email, $subject, $message); }
Delete spam trackbacks
Automatically delete spam trackbacks.
add_action('comment_spam_trackback', 'delete_spam_trackbacks', 10, 2); function delete_spam_trackbacks($comment_id, $comment) { wp_delete_comment($comment_id, true); }
Add custom action on comment unapproval
Perform a custom action when a comment is unapproved.
add_action('comment_unapproved_comment', 'custom_action_on_unapproval', 10, 2); function custom_action_on_unapproval($comment_id, $comment) { // your custom code here }
Log pingback approvals
Log pingback approvals to a custom log file.
add_action('comment_approved_pingback', 'log_pingback_approvals', 10, 2); function log_pingback_approvals($comment_id, $comment) { $log_message = "Pingback with ID: {$comment_id} approved at " . current_time('mysql') . "\n"; $log_file = fopen('pingback_approval_log.txt', 'a'); fwrite($log_file, $log_message); fclose($log_file); }
Send email notification on trackback spam
Send an email to the admin when a trackback is marked as spam.
add_action('comment_spam_trackback', 'notify_admin_on_trackback_spam', 10, 2); function notify_admin_on_trackback_spam($comment_id, $comment) { $admin_email = get_option('admin_email'); $subject = 'Trackback marked as spam'; $message = "A trackback with ID: {$comment_id} has been marked as spam."; wp_mail($admin_email, $subject, $message); }