Allá por el mes de julio os hablábamos de cómo mejorar considerablemente la seguridad de WordPress y de Wordfence, un magnífico firewall que nos ayuda, y mucho, a mejorar sensiblemente la seguridad de nuestros WordPress.

Pues bien, este estupendo plugin tiene un gran problema, reportado hace unos 5 meses y sin solución de momento, y es el crecimiento ilimitado de su log, concretamente de la tabla wp_wfHits (o el prefijo que le hayáis puesto a vuestra base de datos). En uno de nuestros blogs superaba los 750 MB de tamaño, por lo que la base de datos se había vuelto completamente inestable al superar los 1.4 GB de tamaño. Por ello hemos decidido poner coto a esta locura añadiendo un pequeño hack, muy similar al que utilizamos en hack para Twitter Widget Pro,  en nuestro archivo functions.php de nuestra plantilla, o plantilla hijo. Al final del mismo debemos insertar el siguiente código PHP:

//Hack para Wordfence
function WF_activation() {
    if ( ! wp_next_scheduled( 'WF_hack' ) ) { 
        wp_schedule_event( time(), 'daily', 'WF_hack' ); 
    }
}
add_action( 'wp', 'WF_activation' );

function WF_hack_daily() {
    global $wpdb;
    $wpdb->query( "TRUNCATE TABLE " . $wpdb->base_prefix . "wfHits" );
}
add_action( 'WF_hack', 'WF_hack_daily' );

De esta forma borrará el contenido de la tabla diariamente. Si la queremos limpiar semanalmente, como es nuestro caso, entonces tendremos que añadir este otro código en lugar del anterior:

//Añadir nuevo intervalo semanal
function WF_semanal( $schedules ) {
    $schedules['weekly'] = array(
        'interval' => 604800, // 1 week in seconds
        'display'  => __( 'Semanal' ),
    );

    return $schedules;
}
add_filter( 'cron_schedules', 'WF_semanal' );

//Hack para Wordfence
function WF_activation() {
    if ( ! wp_next_scheduled( 'WF_hack' ) ) { 
      wp_schedule_event( time(), 'weekly', 'WF_hack' ); 
   }
}
add_action( 'wp', 'WF_activation' );

function WF_hack_weekly() {
    global $wpdb;
    $wpdb->query( "TRUNCATE TABLE " . $wpdb->base_prefix . "wfHits" );
}
add_action( 'WF_hack', 'WF_hack_weekly' );

Con este simple y sencillo código nos vamos a ahorrar muchos problemas.

Esperamos que os resulte útil mientras el amigo Mark Maunder pone solución a este problema.

Actualización

Como habéis podido ver, si leéis inglés, Mark Maunder, creador del plugin, nos comenta que existe una función que se encarga diariamente de limpiar la tabla dejando los últimos 20.000 registros, cosa que conocíamos, sin embargo, tal y como le hemos comentado, tanto en nuestro caso, como en algún otro que hemos encontrado en algunos foros especializados, esta tabla crece y crece sin parar, a pesar de que existe la rutina diaria que ejecuta dicha función.

Mientras no encontremos el motivo que lleva a nuestra base de datos a engordar hasta la extenuación, mantendremos activo este pequeño hack.

En cuanto encontremos la solución, al menos a nuestro problema. Publicaremos un comentario con la misma.

Gracias Mark por tu interés y por tu gran trabajo.