Skip to content

ForjaCampos personalizados por código

La API de desarrollo de CMB2, la experiencia de edición de ACF. Sin panel de administración y sin plugin que activar.

Un ejemplo completo

php
add_action( 'forja/register_boxes', function () {
	forja_register_box( 'portada', array(
		'title'           => 'Contenido de portada',
		'object_subtypes' => array( 'page' ),
		'fields'          => array(
			array( 'type' => 'text',  'name' => 'titular', 'label' => 'Titular' ),
			array( 'type' => 'image', 'name' => 'fondo',   'label' => 'Imagen de fondo' ),
		),
	) );
} );

Y en la plantilla:

php
forja_the_field( 'titular' );

$fondo = forja_get_field( 'fondo' );

Los 35 tipos de campo

Agrupados por para qué sirven. La referencia completa —cada opción, qué guarda y qué devuelve— está en Los campos.

FamiliaTipos
Texto y númerostext textarea number range email url password
Elecciónselect radio checkbox button_group true_false
Contenido enriquecidowysiwyg link oembed
Mediosimage file gallery icon_picker
Fecha, hora y colordate_picker time_picker date_time_picker color_picker
Relacionalespost_object page_link relationship taxonomy user
Compuestosrepeater group flexible_content
Presentaciónmessage separator tab accordion

Cuatro que conviene destacar:

  • repeater y flexible_content guardan en el formato de ACF —banner_0_titulo, una clave por subcampo y fila—, así que un sitio existente se lee sin migrar nada.
  • Los relacionales buscan por AJAX en vez de volcar el catálogo entero en el HTML. Un sitio con miles de entradas sigue siendo usable.
  • icon_picker busca en vivo entre los más de 200.000 iconos de Iconify. No se empaqueta ningún catálogo, y en la parte pública sale un SVG en línea sin JavaScript.
  • clone no es un tipo del catálogo: se resuelve al declarar la caja, así que nada por debajo llega a verlo. Incorpora un conjunto de campos reutilizable en tantos grupos como quieras, con prefijos y ajustes por campo.

Todos funcionan dentro de una fila de repetidor, incluidos el wysiwyg y los relacionales.

Todo verificado: 215 tests de integración contra un WordPress real, 35 tests de navegador, y un comparador que exige markup idéntico al de ACF campo a campo.

Publicado con licencia GPL-2.0 o posterior.