Etags Desarrollos





Campos extra en Visual FormBuilder

Category : Development / Programación · by Dec 24th, 2014

En esta ocasón me gustaría poner aquí un tip simple para agregar campos a un formulario pre hecho con VFB.
En mi caso necesitaba agregar los campos del formulario de un producto de woocommerce y precisaba añadir los campos de título, id y url.
Asi que decidí utilizar Visual Form Builder que es bastante sencillo de utlizar y muy gráfico.
Para esto cree un arreglo con los campos que desee crear , y los agregué en el archivo de funciones de mi tema.

global $extra_fields;
$extra_fields = array();
$extra_fields[] = array("field_key"=>"producto","field_name"=>"Producto");
$extra_fields[] = array("field_key"=>"urlproduct","field_name"=>"URL del Producto");
$extra_fields[] = array("field_key"=>"titleproduct","field_name"=>"Título del Producto");

Luego hay que modificar en los archivos del plugin, las líneas siguientes
en visual-form-builder/includes/form-output.php
Justo debajo de

$fields         = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $this->field_table_name WHERE form_id = %d ORDER BY $order_fields", $form_id ) );

Agregar

global $extra_fields;
$s_ex = 900;
for($i=0;$i<count($extra_fields);++$i){ 	
        $f = new stdClass; 	
        $f->field_id = ++$s_ex;
	$f->field_key = $extra_fields[$i]["field_key"];
	$f->field_name = $extra_fields[$i]["field_name"];
	$f->field_type = 'hidden';
	$f->field_options = '';
	$f->field_parent = 0;
	$f->field_required = false;
	$f->field_default = $extra_fields[$i]["default"];
	$fields[] = $f;
}

Y más abajo en la sección donde se muestran los campos agregar el campo “hidden”

switch ( $field_type ) {
		case 'text' :
		case 'email' :
		case 'url' :
		case 'currency' :
		case 'number' :
		case 'phone' :
		case 'hidden' :

		// HTML5 types
		if ( in_array( $field_type, array( 'email', 'url','hidden' ) ) )

En el archivo “visual-form-builder/includes/email.php” cerca de la línea 102

$fields = $wpdb->get_results( $wpdb->prepare( "SELECT field_id, field_key, field_name, field_type, field_options, field_parent, field_required FROM $this->field_table_name WHERE form_id = %d ORDER BY $order", $form_id ) );

Agregar

global $extra_fields;
$s_ex = 900;
for($i=0;$i<count($extra_fields);++$i){ 	
        $f = new stdClass; 	
        $f->field_id = ++$s_ex;
	$f->field_key = $extra_fields[$i]["field_key"];
	$f->field_name = $extra_fields[$i]["field_name"];
	$f->field_type = 'text';
	$f->field_options = '';
	$f->field_parent = 0;
	$f->field_required = false;
	$fields[] = $f;
}

Ahora lo único que resta es darle los valores iniciales a las variables, para esto en la plantilla donde se vaya a mostrar el formulario hacemos

global $extra_fields;
foreach($extra_fields as $k=>$v){
	switch($v["field_key"]){
		case "producto": $extra_fields[$k]["default"] = $post->ID; break;
		case "urlproduct": $extra_fields[$k]["default"] = get_permalink($post->ID); break;
		case "titleproduct": $extra_fields[$k]["default"] = get_the_title($post->ID); break;
	}
}
echo do_shortcode("[vfb id=1]");

Así podremos pasar los valores que necesitemos para nuestro formulario el cual enviará estos datos por correo y los guardará también en la base de datos.

Espero que sea de ayuda.

SHARE :

Leave a Reply

Your email address will not be published. Required fields are marked *