The get_comment_type WordPress PHP filter allows you to modify the returned comment type in WordPress.
Usage
add_filter('get_comment_type', 'your_custom_function', 10, 3); function your_custom_function($comment_type, $comment_id, $comment) { // your custom code here return $comment_type; }
Parameters
$comment_type
(string): The type of comment, such as ‘comment’, ‘pingback’, or ‘trackback’.$comment_id
(string): The comment ID as a numeric string.$comment
(WP_Comment): The comment object.
More information
See WordPress Developer Resources: get_comment_type
Examples
Change Comment Type
Modify the comment type for specific comments.
add_filter('get_comment_type', 'change_specific_comment_type', 10, 3); function change_specific_comment_type($comment_type, $comment_id, $comment) { // Change comment type for comment with ID 42 to 'pingback' if ($comment_id == '42') { $comment_type = 'pingback'; } return $comment_type; }
Add Custom Comment Type
Create a custom comment type based on a comment meta value.
add_filter('get_comment_type', 'add_custom_comment_type', 10, 3); function add_custom_comment_type($comment_type, $comment_id, $comment) { // Check if comment has 'review' meta value $is_review = get_comment_meta($comment_id, 'review', true); if ($is_review) { $comment_type = 'review'; } return $comment_type; }
Replace Pingbacks with Trackbacks
Change all pingback comment types to trackbacks.
add_filter('get_comment_type', 'replace_pingback_with_trackback', 10, 3); function replace_pingback_with_trackback($comment_type, $comment_id, $comment) { if ($comment_type == 'pingback') { $comment_type = 'trackback'; } return $comment_type; }
Filter Comment Types Based on User Role
Change comment types for users with a specific role.
add_filter('get_comment_type', 'filter_comment_type_by_user_role', 10, 3); function filter_comment_type_by_user_role($comment_type, $comment_id, $comment) { // Get the comment author's user object $user = get_user_by('email', $comment->comment_author_email); // Check if the user has the 'editor' role if (in_array('editor', $user->roles)) { $comment_type = 'editor_comment'; } return $comment_type; }
Remove Comment Type for Anonymous Users
Remove comment types for anonymous users (not logged in).
add_filter('get_comment_type', 'remove_comment_type_for_anonymous_users', 10, 3); function remove_comment_type_for_anonymous_users($comment_type, $comment_id, $comment) { // Check if the user is logged in if (empty($comment->user_id)) { $comment_type = ''; } return $comment_type; }