Using WordPress ‘get_comment_author_IP’ PHP filter

The get_comment_author_IP WordPress PHP filter allows you to modify the comment author’s IP address before it’s returned.

Usage

add_filter( 'get_comment_author_IP', 'your_custom_function', 10, 3 );
function your_custom_function( $comment_author_ip, $comment_id, $comment ) {
  // your custom code here
  return $comment_author_ip;
}

Parameters

  • $comment_author_ip (string) – The comment author’s IP address or an empty string if it’s not available.
  • $comment_id (string) – The comment ID as a numeric string.
  • $comment (WP_Comment) – The comment object.

More information

See WordPress Developer Resources: get_comment_author_IP

Examples

Anonymize IP Addresses

To anonymize comment author IP addresses by removing the last octet:

add_filter( 'get_comment_author_IP', 'anonymize_comment_author_IP', 10, 3 );
function anonymize_comment_author_IP( $comment_author_ip, $comment_id, $comment ) {
  $ip_parts = explode( '.', $comment_author_ip );
  $ip_parts[3] = 'xxx';
  $anonymized_ip = implode( '.', $ip_parts );
  return $anonymized_ip;
}

Display “Unknown” for Empty IP Addresses

To display “Unknown” for comment authors with empty IP addresses:

add_filter( 'get_comment_author_IP', 'display_unknown_for_empty_ips', 10, 3 );
function display_unknown_for_empty_ips( $comment_author_ip, $comment_id, $comment ) {
  if ( empty( $comment_author_ip ) ) {
    return __( 'Unknown', 'text-domain' );
  }
  return $comment_author_ip;
}

Append Country Code to IP Address

To append the comment author’s country code to their IP address using an external API:

add_filter( 'get_comment_author_IP', 'append_country_code_to_ip', 10, 3 );
function append_country_code_to_ip( $comment_author_ip, $comment_id, $comment ) {
  $country_code = get_country_code_from_ip( $comment_author_ip );
  return $comment_author_ip . ' (' . $country_code . ')';
}

Replace Local IP Addresses with “Local”

To replace local IP addresses (127.0.0.1) with the text “Local”:

add_filter( 'get_comment_author_IP', 'replace_local_ip', 10, 3 );
function replace_local_ip( $comment_author_ip, $comment_id, $comment ) {
  if ( '127.0.0.1' === $comment_author_ip ) {
    return __( 'Local', 'text-domain' );
  }
  return $comment_author_ip;
}

Hide IP Addresses for Specific User Roles

To hide IP addresses for specific user roles, such as “administrator” and “editor”:

add_filter( 'get_comment_author_IP', 'hide_ip_for_specific_roles', 10, 3 );
function hide_ip_for_specific_roles( $comment_author_ip, $comment_id, $comment ) {
  $user = get_user_by( 'email', $comment->comment_author_email );
  if ( $user && ( user_can( $user, 'administrator' ) || user_can( $user, 'editor' ) ) ) {
    return __( 'Hidden', 'text-domain' );
  }
  return $comment_author_ip;
}