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.

Contenido del capítulo