CF7 campos dinámicos

Añadimos un campo dinámico ‘carrera_elegida’ en los formularios de Contact Form 7, para que sea oculto y con el valor dado por un atributo Advanced custom field del post.

En el formulario tendríamos [carrera_elegida carrera_elegida]

add_action( 'wpcf7_init', 'wpcf7_add_form_tag_carrera_elegida' );
function wpcf7_add_form_tag_carrera_elegida() {
    // Add shortcode for the form [carrera_elegida]
    wpcf7_add_form_tag( 'carrera_elegida',
        'wpcf7_carrera_elegida_form_tag_handler',
        array(
            'name-attr' => true
        )
    );
}
// Parse the shortcode in the frontend
function wpcf7_carrera_elegida_form_tag_handler( $tag ) {
    global $wp;
	$post = get_post($_GET['id_post']);
	$carrera_elegida = get_field('carrera_elegida', $post->ID);
    $url = home_url( $wp->request );
    return '<input type="hidden" name="'.$tag->name.'" value="'.$carrera_elegida.'" />';
}

Y para poder filtrarlo/usarlo en el email que se manda, tenemos este filtro disponible:

add_filter("wpcf7_posted_data", function ($posted_data) {

    // ....

    return $posted_data;

});