When you’re running a website through CloudFlare you may notice that IP addresses being logged are not correct – that each IP address that your website logs will be from the ClareFlare network – not the visitor.
This is because ClareFlare acts as a reverse proxy, masking the typical ways of recording a visitors IP address.
In PHP (the code language powering WordPress) – this is normally done using $_SERVER[‘REMOTE_ADDR’]
To fix this you need to take advantage of a special server variable available to CloudFlare users – $_SERVER[‘HTTP_CF_CONNECTING_IP’]
The code below shows how to use this server variable to fix WordPress IP address logging issues.
To use it I recommend you create a “must use” plugin containing the code – “must use” plugins are like ordinary plugins but ran earlier in the WordPress loop and always enabled. Not sure how to create a “must use” plugin? See How to create a “Must-Use” plugin.
if ( isset( $_SERVER["HTTP_CF_CONNECTING_IP"] ) ) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; }