gan318さん、こんにちは。
下記のような感じでいかがでしょう。
テーマのfunctions.phpに追記すれば動くかと思います。
ただし、ホスト名を取得するにはDNSリクエストによる外部ネットワークの影響を受けやすくなります。IPによる指定であれば部分的であっても問題ないので、該当するホストの上位3ブロック程度までIPの範囲が判れば、その方が速度的に有利になりますし、無関係なIPを承認待ちにすることも少ないでしょう。
- 承認待ちにするホストは、配列にて複数指定可能です。
- ホスト名が取得できなかった場合にも承認待ちになるようにしています。
function moderate_required_comment_gray_host( $approved ) {
if ( $approved != 1 ) { return $approved; }
$gray_hosts = array(
'marunouchi.tokyo.ocn.ne.jp'
);
$gray_hosts = implode( '|', array_map( 'preg_quote', $gray_hosts, array( '/' ) ) );
$comment_host = $_SERVER['REMOTE_HOST']?$_SERVER['REMOTE_HOST']:gethostbyaddr( $_SERVER['REMOTE_ADDR'] );
if ( $comment_host == $_SERVER['REMOTE_ADDR'] ) {
return 0;
}
if ( preg_match( "/$gray_hosts/", $comment_host ) ) {
return 0;
} else {
return 1;
}
}
add_filter( 'pre_comment_approved', 'moderate_required_comment_gray_host' );
ありがとうございました。
幸い、IPの重複が出てきたので、とりあえずIPで様子を見て、
それでダメだった場合、この方法を取らせて頂きます。
詳しいご教示ありがとうございました。