Categorías: Tutoriales

Akismet no conecta. Configurar Akismet detrás de un proxy

Si Akismet, el archiconocido plugin de WordPress para evitar SPAM, no es capaz de conectar con sus servidores puede ser por dos motivos, o porque sus servidores están caído (esto no suele pasar), o porque la red donde nos encontramos está bajo un firewall. ¿Qué hacemos en este caso? posiblemente los administradores de esa red provean un salida opcional mediante proxy.

Este fue nuestro caso en uno de nuestro últimos proyecto con Codection. No citaré el nombre de la organización, pero si diré que tiene un volumen bastante grande, y la opción de abrirnos puertos o pasarelas para un servicio determinado no suele ser una opción que se ofrezca. ¿Entonces? Lo que os adelantaba arriba, la instalación de WordPress saldrá por un proxy.

¿Qué problema tiene Akismet con un proxy? Básicamente que no está debidamente preparado. Pero tras unos pocos cambios veréis cómo funciona a la perfección. Os explico cómo hacerlo.

Lo primero es definir en nuestro wp-config las siguientes líneas, especificando lo correspondiente a cada caso.

[code]define(‘WP_PROXY_HOST’, ‘url.del.proxy’);
define(‘WP_PROXY_PORT’, ‘8100’);
define(‘WP_PROXY_USERNAME’, ‘usuario’); // no todos los proxies necesitan autenticación
define(‘WP_PROXY_PASSWORD’, ‘contraseña’);[/code]

Ahora hemos de modificar el plugin, para ello, editamos el archivo akismet.php que encontramos dentro del directorio del plugin (por defecto: /wp-content/plugins/akismet). Buscamos la función akismet_http_post y la reemplazamos por la siguiente. Y eso es todo.

[code]

function akismet_http_post($request, $host, $path, $port = 80, $ip=null){
global $wp_version;
$akismet_version = constant(‘AKISMET_VERSION’);
$args = array(
‘method’=>’POST’,
‘user-agent’=>”User-Agent: WordPress/$wp_version | Akismet/$akismet_version”,
‘body’=>$request
);
$url = “http://”.$host.$path;

if( !class_exists( ‘WP_Http’ ) )
include_once( ABSPATH . WPINC. ‘/class-http.php’ );
$http_request = new WP_Http;
$http_response = $http_request->request($url,$args);
if( is_wp_error( $http_response ) )
return;
$response[0] = $http_response[‘headers’];
$response[1] = $http_response[‘body’];
return $response;
}

[/code]

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

Entradas recientes

432 CVEs

5 días hace

Anti-IA

2 semanas hace

Memoria

3 semanas hace

Mal uso

4 semanas hace

Precio de la RAM

1 mes hace

AUR

1 mes hace