Esta no es una tarea fácil. El complemento del formulario de contacto 7 no brinda acceso a la construcción de campos de formulario y, por lo tanto, la única forma de completar previamente un campo en la carga del formulario es a través de javascript. Hay una extensión de complemento que hace esto, Publicar mi formulario CF7, pero no está diseñado para manejar perfiles de usuario por ejemplo. Tiene un mecanismo incorporado que le permite manejar mediante programación el envío y la carga de un formulario y sus valores mediante ganchos, pero, de nuevo, no es una respuesta fácil de proporcionar. Le daré aquí el esquema de los pasos que debe seguir para lograr esto,
usando el complemento anterior, necesitaría conectar los filtros,
‘cf7_2_post_save-post’ para mapear su formulario a su perfil. Deberá usar la función de mapeo en una publicación ficticia, use el tipo de publicación ‘publicación’ para esto, para activar el gancho,
add_action('cf7_2_post_save-post', 'save_your_profile', 10, 3);
function save_your_profile($sky_key, $submitted_data, $submitted_files){
//check this is your form, using the unique key.
if('profile-form'!= $cf7_key) return;
//load your profile values
$submitted_data['field-name'];
}
‘cf7_2_post_form_values’ para rellenar previamente los campos al cargar el formulario
add_filter('cf7_2_post_form_values', 'load_profile_values', 10, 4);
function load_profile_values($values, $form_id, $post_type, $cf7_key){
//check this is your form, using the unique key.
if('profile-form'!= $cf7_key) return $values;
//load your profile values
$values['field-name']=<field_value>;
return $values;
}
solución personalizada alternativa
Como ya tiene una solución funcional para crear/guardar un nuevo perfil, puede crear un javascript personalizado para completar los campos de su formulario cuando la página se haya cargado. Use el gancho ‘do_shortcode_tag’ para detectar cuándo se está cargando su formulario,
add_filter('do_shortcode_tag', 'append_script_to_form',10,3);
function append_script_to_form($output, $tag, $attr){
if('contact-form-7' != $tag){
return $output;
}
if(!isset($attr['id']) || 2 != $attr['id']){ //check for your form.
return $output;
}
//check if the user is logged in and has a profile, else return $output.
//load the profile.
$script="<script>".PHP_EOL;
$script .= '(function($)( $(document).ready(function(){'.PHP_EOL;
//each field is wrapped in a span.field-name element.
$script .= '$("span.wpcf7-form-control-wrap.field-name input").val("'.$profile_values["field-name"].'");'.PHP_EOL;
//... and so on
$script .= '});})(jQuery)'.PHP_EOL;
$script .= '</script>'.PHP_EOL;
//finally tag your script at the end of the form output.
return $output . $script;
}
.