Con el auge del User Generated Content (contenido generado por el usuario) cada día son más las consultas y peticiones de clientes que recibo acerca de permitir a los usuarios generar o, de algún modo, «introducir» contenido en una web WordPress.
En realidad la solución es bastante sencilla y se puede, sin mucha complicación, crear un formulario para que los usuarios puedan crear contenido como entradas de WordPress o productos de WooCommerce a través de él. Por supuesto, si hablamos de uso avanzado de formularios, hablamos de Gravity Forms.
Tabla de contenidos
Los campos de entradas de Gravity Forms
Por defecto (es decir, sin necesidad de utilizar ningún add-on), Gravity Forms incluye varios tipos de campos:
- Campos estándar, como casillas de selección, campos de texto, selectores, etcétera
- Campos avanzados, con características especiales, como email, nombre, fecha, captcha, consentimiento, etcétera
- Campos de entrada, de los que voy a hablar a continuación
- Campos de precio, que permiten vender productos y servicios usando Gravity Froms como un sencillo sistema de venta, junto con algún add-on para procesar el pago como Gravity Forms PayPal Add-On
Y la magia necesaria para que el usuario pueda generar contenido en nuestra web son, como ya habrás imaginado, los campos de entrada, campos que pueden ser enlazados a diferentes partes de una entrada de WordPress de forma que ésta sea creada al enviar el formulario.
Crear una entrada en WordPress con un formulario
Dos apuntes interesantes aquí. En primer lugar, que hay un campo para cada parte de una entrada: título, contenido, extracto, imagen destacada, categoría y etiquetas; así que podemos crear un formulario que rellene absolutamente toda la información de la entrada. De hecho, hay incluso un tipo de campo para crear campos personalizados (custom fields) mediante el formulario.
El segundo dato interesante es que esa entrada puede quedar en el estado que queramos, es decir, podemos permitir a nuestros usuarios que publiquen entradas pero también, si estas entradas requieren revisión, supervisión o aprobación previa por parte de cualquiera de los roles para ello (editor, administrador), podemos hacer que queden como borradores o pendientes de revisión.
Estas selecciones específicas podremos realizarlas a través del campo Título, que también nos permite establecer quién será el autor de la entrada de entre la lista de usuarios que tienen permitida la capacidad para ello o bien seleccionar que sea el usuario conectado (es decir, el que rellena y envía el formulario).
Así que, como ves, permitir que el usuario genere entradas del blog es bien sencillo: creas el formulario utilizando los campos de entrada (título, contenido, imagen destacada, etcétera) y lo publicas. Tus usuarios pueden, a partir de ese momento, crear entradas utilizando este formulario.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Productos creados por los usuarios en WooCommerce
Si te has fijado, hasta ahora sólo he hablado de entradas. Y es que los campos de entrada de Gravity Forms no permiten crear otro tipo de contenido, sólo entradas del blog.
Sin embargo a veces puede ser necesario poner a disposición de los usuarios un modo de crear en nuestro sitio otro tipo de contenidos (custom post types), y el más habitual suelen ser los productos de WooCommerce.
Afortunadamente, hay un add-on gratuito que permite hacerlo: Gravity Forms + Custom Post Types. Este add-on añade a las opciones disponibles con el título una más: la de seleccionar qué tipo de contenido creará el formulario.
Una vez instalado y activado el plugin (no necesita configuración) el campo Título de los campos de entrada de Gravity Forms tendrá una nueva opción: un selector para el tipo de contenido.
De esta forma podemos utilizar un formulario para crear no sólo entradas, sino también otro tipo de contenido como páginas o, si tienes instalado WooCommerce, productos. Por supuesto, también cualquier otro custom post type que tengas registrado en tu instalación: descargas de EDD, portfolio, etcétera.
Campos específicos de los productos
Seguro que ya te estás dando cuenta del fallo: nos faltan campos. En efecto, un producto tiene campos que una entrada no tiene. El principal de todos, el precio. ¿Cómo narices hacemos, con este método, que el usuario pueda establecer el precio del producto?
La respuesta es sencilla: campos personalizados (custom fields). Como tipo de contenido personalizado que son, los productos de WooCommerce establecen los campos no estándar como campos personalizados y, como ya he mencionado anteriormente, sí disponemos de un campo entre los campos de entrada de Gravity Forms para establecer campos personalizados.
Así, establecer la mayoría de los campos del producto es trivial: sólo tenemos que crear en nuestro formulario campos personalizados con los nombres adecuados. ¿Cuáles? Pues ahí van unos pocos que te van a ser útiles:
- Precio: _regular_price
- Precio rebajado: _sale_price
- Virtual: campo _virtual con valor yes
- Descargable: campo _downloadable con valor yes
- SKU: _sku
Pero vamos, que no necesitas que te los ponga todos: basta con que hagas click derecho en el campo de la pantalla de edición de producto del que necesites saber el nombre, selecciones «Inspeccionar» y te fijes en el id que muestra. En el vídeo de abajo puedes ver algunos ejemplos de cómo crear estos campos, entre ellos el precio, si es virtual y/o descargable y el SKU.
Vídeo: Productos de WooCommerce creados por los usuarios
En este vídeo puedes ver todo el proceso, tanto para crear entradas como para crear productos de WooCommerce:
manel santalo dice
Hola Enrique,
Para Podrías explicar como subir los atributos de un producto. Lo he intentado hacer con el inspeccionar pero ….
Muchas gracias y felicidades por tu trabajo, nos es de gran utilidad ¡¡
Enrique J. Ros dice
Hola Manuel
Gracias por tu comentario 🙂
Los atributos son taxonomías, así que no es posible hacerlo con este sistema (es sencillo, pero limitado). Para eso ya habría que recurrir a métodos más avanzados.
Un saludo.
Felipe Calderón dice
Buen articulo, felicitaciones.
Tengo una pregunta, es posible por medio de este metodo que los usuarios puedan editar la o las entradas que crean ?
Gracias.
Enrique J. Ros dice
Hola Felipe
No, ya que no son autores y no tienen privilegios para ello.
Un saludo
Xavi dice
Hola muy bueno como siempre Enrique, oye y para subir los atributos de woocommerce como seria, un saludo y gracias
Carlos Andres dice
como se puede agregar para que guarden las categorias de producto a los formularios
Sebastián dice
Quiero instalar su plugin y me salta el siguiente error:
Fatal error: Uncaught Error: Class «GFAPI» not found in S:\Server WEB\htdocs\wordpress\wp-content\plugins\gf-form-multicolumn\includes\WH_GF_Multicolumn_Activator.php:20 Stack trace: #0 S:\Server WEB\htdocs\wordpress\wp-content\plugins\gf-form-multicolumn\gf-form-multicolumn.php(61): WH\GF\Multicolumn\Classes\WH_GF_Multicolumn_Activator->activate() #1 S:\Server WEB\htdocs\wordpress\wp-includes\class-wp-hook.php(292): activate(») #2 S:\Server WEB\htdocs\wordpress\wp-includes\class-wp-hook.php(316): WP_Hook->apply_filters(», Array) #3 S:\Server WEB\htdocs\wordpress\wp-includes\plugin.php(484): WP_Hook->do_action(Array) #4 S:\Server WEB\htdocs\wordpress\wp-admin\plugins.php(193): do_action(‘activate_gf-for…’) #5 {main} thrown in S:\Server WEB\htdocs\wordpress\wp-content\plugins\gf-form-multicolumn\includes\WH_GF_Multicolumn_Activator.php on line 20
Enrique J. Ros dice
Hola Sebastián
Contacta directamente con el soporte del plugin que te está dando el error, son los únicos que te pueden ayudar.
Un saludo
Noelia dice
Hola! Antes de nada gracias. Estoy intentando instalar el plugin (tanto gravity forms como gravity forms + custom post types) y no consigo acceder a el, no me sale ni en el desplegable de «añadir» ni en el menú izquierdo, lo he intentado varias veces pero nada, no se que hacer, me puedes guiar? gracias
Federico dice
Hola Enrique muy bueno tu video! tengo una consulta, cree perfectamente el formulario dando opcion virtual y descargable pero no estoy pudiendo crear el campo para Añadir Archio mi idea es poner 4 archivos para que agregue el usuarios y no lo logro, sabras como hacerlo?
Saludos
Miguel Jordán dice
Hola Enrique gusto saludarte!.. excelente contenido ha sido de gran ayuda para enteder un poco mas las bonndades de Gravity Form.
Queria hacerte una consutla: Es posible llamar varias veces(de forma recursiva) un formulario anidado en gravity form, es decir,
Formulario Padre -> llama a formulario hijo y este a su vez puede llamarse a si mismo para cargar mas informacion como un hijo del formulario anidado y asi sucesivamente?
de antemano muchas gracias!.