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.
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: