Crear formularios de forma programática
Utiliza un formulario programático cuando un plugin o un tema hijo sea el propietario del flujo de trabajo y deba controlar sus campos y configuración mediante versiones en el código. Utiliza un formulario guardado en Forms cuando los editores necesiten cambiar el diseño, las notificaciones, el webhook o el comportamiento de Create Post.
Renderizador público
pom_render_programmatic_form(
array $layout,
array $config = array(),
array $args = array()
): string
Comprueba la función antes de llamarla cuando POM Theme sea opcional.
if ( ! function_exists( 'pom_render_programmatic_form' ) ) {
return '';
}
$config = pom_forms_get_default_config();
$html = pom_render_programmatic_form(
$layout,
$config,
array(
'title' => 'Product information request',
'custom_css_class' => 'my-product-request',
)
);
echo $html; // Trusted output from the POM form renderer.
Contrato de diseño
steps
└── rows
└── columns
└── field_ids
fields
└── field definition keyed by ID
Cada ID de campo referenciado debe existir en el mapa fields de nivel superior. Utiliza nombres de campo estables porque las etiquetas de combinación, las condiciones y las rutas de notificación dependen de ellos.
Contrato de configuración
Empieza con pom_forms_get_default_config() y anula únicamente el comportamiento que posee la integración. Los argumentos públicos de conveniencia son:
| Argumento | Propósito |
|---|---|
title |
Nombre legible del formulario |
custom_css_class |
Clase de contenedor adicional |
admin_routes |
Reemplazar las rutas de notificación del administrador |
client_routes |
Reemplazar las rutas del remitente |
messages |
Anulaciones del mensaje de combinación |
subject |
Aplicar un asunto a las rutas del administrador |
rebuild |
Descriptor firmado para reconstruir un formulario propiedad del código tras la pérdida de caché o transitorios |
Los payloads programáticos reciben el esquema/revisión actual y un token firmado determinista. POM almacena un payload del lado del servidor de corta duración para el envío. Webhook y Create Post se desactivan de forma forzada en los formularios programáticos; utiliza un formulario guardado para esas acciones.
Soporte de caché de página completa
Para páginas en caché, registra un reconstructor:
pom_forms_register_programmatic_rebuilder(
'my_product_request',
static function ( array $args ): array {
return my_plugin_build_product_request_form( $args );
}
);
A continuación, pasa:
'rebuild' => array(
'key' => 'my_product_request',
'args' => array( 'product_id' => $product_id ),
),
POM firma este pequeño descriptor para que un visitante no pueda alterarlo. El reconstructor debe seguir validando sus argumentos y devolver layout, config y, opcionalmente, args.
Las referencias siguientes cubren las definiciones de campos, la validación, las acciones y el ciclo de vida de renderizado/envío.