Cómo añadir el ID de la entrada (u otros datos de la entrada) a un correo de Contact Form 7
He descargado Contact Form 7 para añadir formularios de contacto insertando un fragmento simple después de cada entrada, y lo he añadido en functions.php así:
//si es tipo de entrada añado un formulario
function is_post_type($type)
{
global $wp_query;
if($type == get_post_type($wp_query->post->ID)) return true;
return false;
}
function add_post_content($content){
if(!is_feed() && !is_home()&& is_single() && is_post_type('post'))
{
$content .= '[contact-form-7 id="2202" title="Formulario de contacto 1"]';
}
return $content;
}
add_filter('the_content', 'add_post_content');
Lo que me gustaría hacer ahora es añadir un nuevo campo en el plugin para enviar el enlace de la entrada donde el usuario está enviando el formulario, o incluso concatenar este enlace o Id después del contenido del correo electrónico, o algo así, pero estoy atascado en WordPress y no sé qué archivo necesito editar y cómo importar las variables $post.
Esto es bastante fácil de hacer con las opciones predeterminadas:
Solo usa la etiqueta especial de correo [_url]
.
Mientras estés en una entrada o página, incluso puedes añadir más elementos como el título con [_post_title]
.
Echa un vistazo a la documentación para ver más opciones disponibles.

Puedes intentar añadir un parámetro GET a tu URL en el enlace de tu formulario de contacto.
Si es un estilo de lightbox, también puedes definir un campo oculto y rellenarlo cuando wpcf7 se cargue usando global $post.
Usa este código para la solución con parámetro en la URL y reemplaza id_post por global $post->ID para la solución con lightbox:
//Añadir el ID del post
function add_post_id_origin ( $tag, $unused ) {
//Primero verificamos si es nuestro campo oculto
if ( $tag['name'] != 'myhiddentag' )
return $tag;
//Esto es para la versión con parámetro en la URL
if(isset($_GET['id_post']) && is_numeric($_GET['id_post']))
{
$post = get_post($_GET['id_post']);
$tag['values'] = array($post->ID);
$tag['options'] = array('readonly');
}
//Esta forma es para el uso regular con global $post
global $post;
$tag['values'] = array($post->ID);
$tag['options'] = array('readonly');
return $tag;
}
//No olvides enganchar la función
add_filter( 'wpcf7_form_tag', 'add_post_id_origin', 10, 2);
