Advanced Custom Fields

Advanced Custom Fields
5 (100%) 1 vote

He sido un fan de Advanced Custom Fields durante mucho tiempo, usándolo en casi todos los sitios que he construido o en los que he trabajado durante los últimos 5 años.

Si no estás familiarizado, Advanced Custom Fields (ACF) es un plugin de WordPress que te da un control mucho mayor de tu contenido de WordPress, utilizando un meta de post personalizado para enriquecer el contenido con datos estructurados. Le permite construir y configurar diferentes tipos de campos de datos que aparecerán en los meta boxes cuando sus editores de contenido actualicen los mensajes, páginas o tipos de mensajes personalizados (y mucho más).

Después de ver una entrada reciente en el blog de ACF, di un paso atrás y empecé a darme cuenta de lo importante que ACF ha sido y sigue siendo para los desarrolladores de WordPress y WordPress – incluso con y especialmente debido a la próxima llegada de Gutenberg. Déjame explicarte.

Cómo funcionan los campos personalizados avanzados

Me llevó un tiempo entender lo que realmente hace, así que les mostraré un ejemplo rápido. Lo he usado en un sitio de caridad de rescate de perros, donde los voluntarios añaden nuevos perros que necesitan ser reubicados, como un tipo de poste personalizado. Sin embargo, además de añadir el nombre y la descripción del perro al título y contenido de la entrada del perro, también quieren guardar la raza del perro, el sexo, un enlace a un vídeo y algunas fotos del perro. He creado un grupo de campos ACF para estos datos desde el menú de administración de ACF ‘Custom Fields’ > ‘Field Groups’ > ‘Add New’:

 

Puede añadir campos de todos los tipos diferentes. Aquí he usado selects, cajas de texto, una simple casilla de verificación de verdadero/falso, y un campo de galería que es un tipo de campo ACF Pro-only – pasaré a la versión Pro un poco más tarde. A continuación se muestra cómo configurar un cuadro de selección con todas las opciones que desea que sus usuarios seleccionen:

 

He especificado que este grupo de campos sólo debería aparecer en las pantallas de edición para el tipo de mensaje personalizado de’Perro’. Aquí hay todo tipo de lógica que puedes usar, como tipo de mensaje, plantilla, categoría y rol de usuario:

 

La potencia real y el momento de la bombilla de ACF es cuando se añaden los datos. Cuando edito una entrada de Dog puedes ver que la pantalla de edición se ve un poco diferente, llena de un meta box personalizado con los campos configurados:

 

Esto hace que añadir todos los datos adicionales sea muy fácil para los editores de contenido y permite a los desarrolladores especificar exactamente dónde quieren que se muestren los datos en el tema, utilizando la función ACFget_field:

"Columnas pequeñas - 12 medianas - 9"
    Subtítulos por aRGENTeaM
        Subtítulos por aRGENTeaMDIFUNDE LA PALABRA-
            Datos del perro: span class="dog-data
                DIFUNDE LA PALABRA-
            </span>
        </h2>
    </a>>
</div> 

Sin ACF, habría tenido que usar las cajas meta personalizadas por defecto de WordPress, codificar mis propias cajas meta más ricas desde cero, o la raza y el género de los calzadores en taxonomías personalizadas, y quizás usar la galería nativa de WordPress incrustada dentro del contenido del mensaje. Temblores.

Campos personalizados avanzados elevan WordPress

Advanced Custom Fields es exactamente lo que le faltaba a WordPress cuando se trata de tener más control sobre el contenido.

Con más de un millón de instalaciones activas desde su lanzamiento en 2011, ACF ha elevado WordPress a un sistema de gestión de contenidos más potente, contribuyendo sin duda al crecimiento de WordPress. Ha sido ampliamente adoptado por desarrolladores y agencias que lo han aprovechado para dar a los clientes el control del contenido sin necesidad de usar atajos, creadores de páginas, o incluso post_content en absoluto. Los desarrolladores tienen control total sobre dónde aparecen los datos en la parte frontal del sitio, evitando las inevitables ediciones de cliente que rompen todo el aspecto de la página.

De hecho, ACF es tan popular entre nuestros propios clientes, que tuvimos que añadir la integración con WP Offload Media para asegurarnos de que las imágenes y el recorte de imágenes en ACF funcionaban con imágenes que habían sido descargadas en Amazon S3 o DigitalOcean Spaces.

El plugin libre de ACF está lleno de campos y características, pero la versión Pro es esencial para obtener acceso a algunos campos sobrecargados como el repetidor, el diseño flexible y la galería.

Por ejemplo, estamos utilizando el campo repetidor para permitir a los usuarios seleccionar ciertos testimonios que se mostrarán en una barra deslizante en las páginas de nuestros productos. El testimonio es un tipo de mensaje personalizado, por lo que el campo del repetidor contiene un campo de objeto de mensaje anidado:

 

Aparece al editar la página para que podamos controlar qué testimonios se mostrarán:

 

ACF siempre ha sido un plugin extremadamente amigable con el desarrollador. No sólo por su precio sorprendentemente asequible para la versión Pro, sino también por sus acciones y filtros salpicados alrededor de la base de código, es extremadamente fácil de ampliar.

ACF también prioriza las mejoras que son importantes para sus usuarios. Uno de los pocos problemas con el plugin que he encontrado en el pasado fue el almacenamiento de la configuración de campos en la base de datos, específicamente tipos de mensajes personalizados para grupos de campos y campos. Esto significaba que si cambiaba la definición del campo en un sitio de desarrollo, no podía empujar su base de datos usando un plugin como WP Migrate DB Pro de nuevo a live, ya que la tabla de mensajes probablemente había cambiado y usted estaría perdiendo los nuevos datos.

Este es el problema de la fusión de bases de datos antiguas (no me hagas empezar), que solía solucionar haciendo cambios en el sitio en vivo primero y luego arrastrando la base de datos a mi sitio local para continuar con el desarrollo. No es ideal en absoluto, pero afortunadamente ACF introdujo la función Local JSON, lo que significa que la configuración de campo puede ser guardada en archivos JSON que pueden ser sincronizados con la base de datos.

Esta es una característica realmente impresionante que resuelve el problema de la fusión de bases de datos para los datos ACF, y significa que puede mantener los archivos JSON bajo control de versiones y hacer que la configuración sea parte de su proceso normal de implementación de archivos. Mientras trabajaba con ACF en nuestro sitio, añadí algunos ajustes para integrarlo aún más con nuestra configuración de git y multientorno:

  • Definir el directorio JSON a nuestro directorio app/data fuera del tema (lo cual puede cambiar)
  • Mostrar sólo el elemento de menú ACF Custom Fields en entornos de desarrollo
  • Sincronizar automáticamente los archivos JSON con la configuración de la base de datos desactualizada en admin_init
<?php
namespace DeliciousBrainsAdmin;
usa DeliciousBrains DBI;
clase ACF {
función pública init() {
add_filter(acf/settings/save_json, array( $this, get_local_json_path);
add_filter(acf/settings/load_json, array( $this, add_local_json_path);
si (! WP_LOCAL_DEV ) {
Permitir sólo la edición de campos durante el desarrollo
add_filter(acf/settings/show_admin, __return_false);
}
add_action(admin_init, array( $this, sync_fields_with_json);
}
/**
* Definir dónde se guarda el JSON local
*
* Cadena @retorno
*/
función pública get_local_json_path() {)
devolver DBI::get_data_dir() . acf-json;
}
/**
* Añada nuestra ruta para el JSON local
*
* @param array $paths
*
* Matriz de retorno
*/
función pública add_local_json_path( $paths ) {
$paths[] = DBI::get_data_dir() . acf-json;
devolver $paths;
}
/**
* Sincronizar automáticamente cualquier configuración de campo JSON.
*/
función pública sync_fields_with_json() {
si (DOING_AJAX) || defined( DOING_CRON) {
regresar;
}
si (! function_exists( acf_get_field_groups) ) {
regresar;
}
grupos = acf_get_field_groups();
si ( vacío( $grupos)) {
regresar;
}
$sync = array();
foreach ( $grupos como $grupo) {
local = acf_maybe_get( $group, local, false);
modificado = acf_maybe_get( $group, modified, 0 );
Privado = acf_maybe_get( $grupo,privado, falso);
if ( $local! == N-json || $private ) { { }
ignorar DB / PHP / grupos de campos privados
continuar;
}
si (! $group[N-‘ID] ) { {¡Ah, sí!
$sync[ $group[‘key] ] = $group;
elseif ( $modified && $modified > get_post_modified_time( U, true, $group[‘ID], true ) ) {
$sync[ $group[‘key] ] = $group;
}
}
si ( empty( $sync )) {
regresar;
}
foreach ( $sync as $key => $v) {
if ( acf_have_local_fields( $key ) ) {
$sync[ $key ][‘fields] = acf_get_local_fields( $key );
}
acf_import_field_group( $sync[ $key ]);
}
}
}
Incluso con Gutenberg en el horizonte, yo diría que ACF sigue siendo muy necesario para crear una mejor experiencia de edición en WordPress.

Qué significa Gutenberg para los campos personalizados avanzados

El nuevo editor de Gutenberg para WordPress es sin duda un cambio en la dirección de la edición de contenidos que ACF ofrece. El contenido se crea utilizando bloques dentro del contenido del mensaje en lugar de almacenarlo como meta de mensaje, lo que da flexibilidad al contenido y al diseño de la página. Inicialmente, Gutenberg no soportaba las cajas meta y las eliminó de la pantalla de edición-post, lo que provocó un gran escándalo. Ahora se ha añadido soporte para meta boxes y aparecen debajo del editor de bloques en la parte inferior de la pantalla con una interfaz de usuario mínima y menos refinada.

Con bloques personalizados para datos personalizados en lugar de campos personalizados, Gutenberg tiene el potencial de tener un gran impacto en el futuro de ACF. Los sitios que ya dependen en gran medida de ACF para personalizar los datos pueden reconsiderar su enfoque de los datos personalizados, y es mucho menos probable que los nuevos sitios instalen ACF una vez que Gutenberg se haya fusionado con el núcleo.

No es la primera vez que se pone en duda el futuro de ACF debido a los cambios propuestos en el núcleo de WordPress. En 2013 se formó un nuevo equipo de plugins Core para Post Meta que al principio sonó como si fuera a matar a los distintos plugins de campos personalizados de terceros:

Ha habido una gran cantidad de bibliotecas, marcos y plugins (CMB, SCB, WPAlchemy, ACF, Pods), que por el momento han desempeñado este papel. Miraremos a estos como preámbulos espirituales de un nuevo plugin digno de ser usado como núcleo.

En ese momento, temía por el futuro de ACF e incluso escribí sobre cómo WordPress podría hacer que ciertos plugins fueran redundantes al introducir nuevas características de la competencia. Finalmente, el proyecto Post Meta no llegó a ninguna parte y ahora es discutible debido a Gutenberg, y ACF resistió la tormenta.

Con una base de usuarios tan grande como la del plugin ACF, los cambios en el plugin pueden tener un gran efecto y en 2014 algunos cambios importantes en el modelo de precios de ACF y las diferencias entre la versión 4 y 5 causaron cierta confusión dentro de la comunidad. Desafortunadamente, algunos miembros de la comunidad llamaron a ACF “irresponsable” por los cambios, creando una especie de reacción contra el plugin y su desarrollador. Fue decepcionante ver que un plugin tan popular y útil recibiera tan poca atención, especialmente porque ACF fue durante mucho tiempo el producto de un único desarrollador y no de una gran compañía de WordPress. Como desarrollador único de plugins en ocasiones, esperaba que la comunidad me apoyara y agradeciera más por el esfuerzo y el producto que ayuda a tantos.

Desde entonces, ACF ha seguido creciendo y evolucionando, y me sorprendió ver que abrazaba a Gutenberg con tanta convicción en agosto, prometiendo mejorar la integración entre los campos ACF y Gutenberg incluso más allá del tratamiento por defecto de Gutenberg de las meta-cajas:

Aunque esta configuración no es la ideal, seguiremos trabajando dentro del sistema para garantizar que ACF se integre en la interfaz de usuario de Gutenberg en la mayor medida posible.

Si no está claro de este artículo hasta ahora, soy un gran fan de ACF, pero lo que recientemente anunciaron me hizo amarlos aún más!

Bloques ACF para Gutenberg

Después de ver lo beneficioso que podía ser Gutenberg y sus bloques personalizados, pero notando lo complicado que es el proceso técnico de creación de bloques, ACF se dispuso a entregar a WordPress algo que, una vez más, WordPress debería haber hecho por sí mismo:

La creación manual de bloques personalizados significa excavar a través de interminables montones de JavaScript. ACF Blocks, por otro lado, hace todo el trabajo duro por usted para que pueda sentarse, relajarse y continuar escribiendo PHP y HTML simples

 

Este es el ejemplo de código de registro de bloque tomado del artículo, es súper simple:

add_action(N-'acf/init', 'my_acf_init');
función mi_acf_init() {
    Existe la función de verificación
    if( function_exists('acf_register_block') ) {
        Registra un bloque de testimonios
        acf_register_block(array(
            "Nombre","Testimonio",
            "Titulo","Testimonio",
            "Descripción" => __ (Un bloque de testimonios personalizados),
            "render_callback",
            "categoría","formato",
            "Icono","Comentarios del administrador",
            "Palabras clave" => matriz ("testimonial","cita"),
        ));
    }
}

Una vez que haya registrado un bloque, deberá configurar el contenido del bloque como un grupo de campo ACF normal y, a continuación, renderizar el bloque en el front-end. Todo esto está cubierto en el artículo y se ve tan sencillo como poderoso. Como subrayan, los bloques ACF no deberían reemplazar las metacajas cuando se necesitan, sino que “nivelan el campo de juego y permiten que más desarrolladores se aprovechen de la característica clave de Gutenberg”

El Futuro de ACF

Desde su lanzamiento ACF ha sido un plugin complementario vital para WordPress. La extiende, la enriquece y la hace más utilizable. No creo que pueda construir sitios de WordPress sin él. Desafortunadamente, para ser una herramienta tan poderosa y útil para WordPress, no siempre ha tenido el más fácil de los paseos.

Los nuevos bloques de ACF para Gutenberg son la guinda del pastel de ACF. Es una gran inversión de ACF en el futuro de WordPress, porque ayudará a reducir la barrera de entrada para que los desarrolladores extiendan Gutenberg sin tener que empezar con la curva de aprendizaje de React, otro nuevo marco JS introducido en WordPress. A la larga, los que están presionando tanto por Gutenberg verán esto como una victoria.

¿Le gustan los campos personalizados avanzados? ¿Ya ha probado los bloques de ACF? ¿Está pensando en utilizar Gutenberg y ACF juntos? Háganoslo saber en los comentarios de abajo.