Formulario de contacto con captcha integrado en Wordpress como una página más (manual, sin plugin)
Nos creamos una cuenta en reCAPTCHA (es de Google ahora). En “My account” veremos nuestras claves, una pública y otra privada, las tenemos en cuenta para después. Y nos bajamos, descomprimimos recaptchalib y subimos al directorio donde tenemos el Wordpress recaptchalib.php quedando en /TUBLOG/recaptchalib.php
Abrimos un documento en blanco (en texto plano) y nos basamos en el index.php que está en el directorio donde tenemos el Wordpress /TUBLOG/index.php, que contiene
<?php
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/
/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
?>
Está todo comentado menos cuatro líneas (las comentadas se podrían borrar) y comentamos o borramos tambien define('WP_USE_THEMES', true); quedando así
<?php
require('./wp-blog-header.php');
?>
Añadimos más código debajo de eso. Nos basamos en el código de otro index.php, pero el de nuestra plantilla, que esta en el directorio /TUBLOG/wp-content/themes/TUTEMADEBLOG/index.php.
Tenemos que usar una parte de ese código, no todo. Hay que fijarse que un blog como éste, tiene por ejemplo, la cabecera (header.php), la barra lateral derecha (sidebar.php) y el pie (footer.php). Con usar un código llamando a esos 3 elementos (porque mi blog no usa más), es suficiente. Si tu blog tiene un segundo sidebar por ejemplo u otro elemento más, habría que llamarlo también y seguro que aparece en tu index.php.
Mi index.php es largo y necesito sólo las primeras líneas, que llaman al header.php <?php get_header(); ?> y abren un div <div id="content">. Y las últimas, que cierran el div </div>, llaman al sidebar.php <?php get_sidebar(); ?> y al footer.php <?php get_footer(); ?>. Quedando así junto con lo anterior:
<title>TUTITULO | TUBLOG</title>
<?php
require('./wp-blog-header.php');
?>
AQUI VA A IR EL CSS
<?php get_header(); ?>
<div id="content">
AQUI VAN A IR LOS CODIGOS
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Ahora lo guardamos dos veces en el directorio donde tenemos Wordpress, junto al primer index.php, una llamándolo contacto.php y otra enviado.php.
En contacto.php donde está AQUI VA A IR EL CSS ponemos:
<style type="text/css">
#content {
margin-top:10px;
}
.name, .mail, .asunto, .msg {
padding: 0px 10px 0px 10px;
background: #FEFEFE;
border: 1px solid #626262;
font: normal 1em Arial, Helvetica, sans-serif;
}
.name, .mail {
width: 140px;
height: 20px;
}
.asunto {
width: 380px;
height: 20px;
}
.msg {
width: 420px;
}
#re {
margin:0 auto; width:500px;
}
#con1, #con2, #con3, #re {
margin:0 auto; width:500px;
}
</style>
y donde está AQUI VAN A IR LOS CÓDIGOS ponemos un formulario (miramos nuestra clave pública de recaptcha para ponerla):
<div id="content">
<div id="con1">
<p>Ningún campo es obligatorio. No obstante, si deseas respuesta, deberás<br />introducir algún e-mail de contacto.</p>
</div>
<form id="contacto" name="contacto" method="post" action="http://TUBLOG/enviado.php">
<div id="con2">
<p>Nombre y Apellidos
<input name="nombre" type="text" id="nombre" class="name"/>
Mail
<input name="mail" type="text" id="mail" class="mail"/>
</p>
<p>
Asunto
<input name="asunto" type="text" id="asunto" class="asunto"/>
</p>
<p>Mensaje</p>
<p>
<textarea name="mensaje" type="text" id="mensaje" class="msg" rows="10"/></textarea>
</p>
</div>
<div id="re">
<?php
require_once('recaptchalib.php');
$publickey = "CLAVEPUBLICARECAPTCHA";
echo recaptcha_get_html($publickey);
?>
</div>
<div id="con3"><p>
<input type="submit" name="Submit" value="Enviar" align="center"/>
</div>
</form>
</div>
En enviado.php donde está AQUI VAN A IR LOS CÓDIGOS ponemos el código php que envía el e-mail (aquí está nuestra clave privada de recaptcha y ponemos el email que va a recibir el correo):
<div id="content">
<p style="margin:0 auto; width:500px; margin-top:50px"align="center">
<?php
require_once('recaptchalib.php');
$privatekey = "CLAVEPRIVADARECAPTCHA";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
$header = 'From: ' . $_POST['mail'] . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje .= "De " . $_POST['nombre'] . " \r\n";
$mensaje .= "e-mail: " . $_POST['mail'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time()) . " \r\n";
$mensaje .= "Mensaje: \r\n" . $_POST['mensaje'] . " \r\n";
$para = 'TUEMAIL';
$asunto = $_POST['asunto'] . " \r\n";
mail($para, $asunto, utf8_decode($mensaje), $header);
echo "Enviado correctamente";
} else {
die ("El reCAPTCHA no fué introducido correctamente. Vuelve a intentarlo.");
}
?>
</p>
</div>
¿El resultado de todo esto? Vean mi propio formulario de contacto
