数日前、「WP で CDN を有効にすると実際の IP を取得できない問題の解決」についての記事を書きました。今日、たまたまグループで助けを求めている人を見かけたのですが、その人は Emlog プログラムを使っており、同じ状況(CDN を有効にした後、実際の IP を取得できない)に遭遇していました。そこで、WordPress の解決策を Emlog でも試してみようと思ったところ、実際にうまくいきました。以下、その手順を皆さんの参考のために共有します。もしかすると、ほかのプログラムでも問題を解決できるかもしれません。

解決手順
エディターで include/lib/function.base.php を開き、60 行目付近に次のコードがあります。
function getIp() {
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
if (!ip2long($ip)) {
$ip = '';
}
return $ip;
}
以下のコードに変更します。
function getIp() {
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = $list[0];
}
if (!ip2long($ip)) {
$ip = '';
}
return $ip;
}
注意
上記のコードは Emlog 5.3.1 バージョンでのみテスト済みです。その他のバージョンについては、ご自身でテストしてください(理論上は動作するはずです)。