Blog personal de IT, viajes y otros hobbies

¿Cómo incluir campos personalizados de ACF en plugins y temas?

Quien haya tenido la desgracia suerte de hablar un poco conmigo sobre informática sabrá que utilizo el plugin de campos personalizados ACF (Advanced Custom Fields) a menudo para el desarrollo de mis proyectos. Uno de los principales motivos es la velocidad con la que puedo generar la estructura de información en mis temas o plugins versus las mínimas complicaciones que este plugin pueda generar (duplicación de post_metas, sobrecarga en el administrador de WordPress).

Pero ahora bien, tanto los plugins como los temas que desarrollemos deben ser totalmente independientes ¿Qué quiero decir con esto? Que nuestros proyectos deben funcionar en cualquier instalación de WordPress, sin tener que estar nosotros instalando los plugins necesarios, migrando bases de datos o retocando configuraciones para que todo funcione normalmente. Entonces ¿Cómo podemos incluir los campos personalizados ACF en los plugins o temas que desarrolllamos? Muy simple:

  1. Incluyendo el plugin directamente dentro de nuestro tema o el mismo plugin.
  2. Creando una dependencia del plugin.

Incluir ACF en nuestro plugin o tema

Incluir ACF dentro del plugin o tema

Reglas oficiales para distribuir ACF en un plugin o tema

Según la documentación oficial podremos instalar distintas versiones de ACF (de pago o la gratuita) según la finalidad económica de nuestro plugin/tema:

Pasos para incluir el plugin de ACF en nuestros desarrollos

Son pocos y muy fáciles los pasos a seguir:

  1. Descarga una copia de la versión que necesites (respetando las reglas del punto anterior)
  2. Copia la carpeta con el plugin dentro de tu tema/plugin.
  3. Haz un include del archivo principal del plugin ACF.
  4. Configura los directorios y PATH del plugin.
  5. Opcional, puedes ocultar el menú de ACF en el administrador de WordPress.

Para los pasos 3, 4 y 5 abriremos nuestro fichero functions.php (del plugin o tema) y pegaremos el siguiente código. Modificar las rutas con el nombre de vuestro directorio de ACF.

https://gist.github.com/maugelves/d2082ecd69145ca37b1dbae1b93b1b9a

Crear una dependencia del plugin

Otra posible solución es declarar el plugin ACF como una dependencia de nuestro plugin. Esto significa que cuando se active el plugin o tema y no tengamos el plugin de ACF saldrá un mensaje advirtiéndonos que necesitamos instalarlo para el correcto funcionamiento.

Mensaje de dependencia del plugin Advanced Custom Field Pro
Mensaje de dependencia del plugin Advanced Custom Field Pro

Para declarar esta dependencia necesitaremos una pequeña librería de PHP llamada «TGM Plugin Activation» de la que tengo un artículo explicando cómo utilizarla.

Los pasos a seguir para declarar la dependencia son:

  1. Descargar la librería TGM Plugin Activation
  2. Hacer un include de la librería en nuestro fichero functions.php
  3. Declarar la dependencia del plugin gratuito o de pago según nuestras necesidades

A continuación detalle el código para cualquiera de las dos versiones del plugin:

Dependencia para la versión gratuita de ACF

Dependencia para la versión PRO de ACF


Conclusión

Dependiendo del proyecto, utilizar ACF puede ser una gran ventaja en ahorro de tiempo de desarrollo. Pero esto generará que nuestro desarrollo dependa de un plugin de terceros. Utilizando cualquier de estas dos técnicas podemos quedarnos tranquilos que nuestro código funcionará correctamente ¿Cuál de las dos técnicas utilizar? Como siempre, cada proyecto es único y debemos valorar cuál es la solución más óptima en cada caso.

Anterior

#WooMadrid – Primer Meetup WooCommerce Madrid

Siguiente

¿Cómo crear formularios y capturar los valores con WordPress y sin plugins?

  1. Jose Alberto

    Hola Mau,

    Si hago un include de ACF en mi plugin , ¿supongo que tendré que ir actualizando las versiones manualmente no?. ¿Crees que es mejor crear la dependencia para no tener que revisar la versión de ACF cada vez que actualizas tu plugin?

    gracias

    • Hola José Alberto…
      Si lo agregas con un composer no habría falta de actualizarlo manualmente, aunque como tú dices es conveniente marcarlo como una dependencia general.
      Un saludo,
      Mauricio

  2. Buenas Mauricio,

    Enhorabuena por el artículo!

    La opción que utilizo yo para agilizar el desarrollo de custom posts y custom fields es CMB2, no sé si lo conoces. Es gratuito y permite también usar como repeater la mayoría de los tipos de campos que maneja. No tiene entorno gráfico, no crea ningún menú adicional en WordPress. Cuando yo empece a usarlo ni siquiera tenían un plugin era una librería que había que incluir en tu tema o plugin.

    Ahora disponen de plugin o también puedes añadirlo directamente incluyéndolo en tu proyecto. La verdad es que es muy completo y ligero, lo que si toca hacer a mano es en el caso de relacionar custom fields ( creo que esto se hace fácil con ACF ), pero vamos metiendo una sencilla query y rellenando los valores a la hora de generar el custom field, lo tienes solucionado.

    Te dejo el enlace tanto al plugin como al repositorio en GitHub por si quieres echarle un ojo, es fácil que te resulte útil:

    https://es.wordpress.org/plugins/cmb2/

    https://github.com/CMB2/CMB2

    • Hola Adrián y gracias por tu comentario.
      Sí, lo conozco y lo he utilizado, como así también Pods, otra gran herramienta y mantenida por los mismos desarrolladores de WordPress.com.
      En este caso sigo utilizando ACF por la rapidez de desarrollo, lo hago todo de forma manual pero luego genero el código PHP en forma automática. Quieras o no esto te ahorra muchas horas de desarrollo. Ya escribiré un post detallando mis pasos de desarrollo con este plugin.
      Un saludo,
      Mauricio

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Funciona con WordPress & Tema de Anders Norén