Contrato de compatibilidad
De qué puede depender una integración, contra qué debe protegerse y qué puede cambiar.
Estable
Seguro para construir sobre ello:
Modelo de contenido
- el tipo de contenido
event; - las taxonomías
event_typeyevent_category, ypost_tagcompartidos; - las claves meta
event_start_date,event_end_date,event_start_datetime,event_end_datetime,hide_event_date,event_all_day; - el array meta
pomy las claves documentadas en Content model; event_assistants, indexado por ID de usuario, con valoresstatusde vacío,waiting-listycancelled;attending_users, y el meta de usuarioattended_events.
Shortcodes
[web_event_search_form]conhide_calendar,error_msgyel_class;[pom_events_fullcalendar]conel_class.
Filtros
pom_events_settings · web_events_custom_meta · web_event_search_form · pom_events_assistants_table_headers · pom_events_export_users_content · pom_events_event_form_inputs · pom_events_single_meta_contact_number · pom_single_event_prev_next_args
Acciones
pom_events_ajax_on_event_signup · pom_events_after_assistants_info_update · pom_events_assistants_table_columns · pom_events_single_before_main_block · pom_events_after_before_main_block · pom_events_single_details_before_place · pom_events_single_details_after_place · pom_events_before_single_content · pom_events_after_single_content · pom_events_single_before_related_posts · pom_events_single_after_related_posts
WooCommerce
- la clave de artículo del carrito
event_id_to_enroll; - el meta del pedido
associated_event_id.
No estable
No construyas sobre:
- nombres internos de clases y funciones;
- el marcado y las clases CSS de las pantallas de administración;
- nombres de acciones AJAX;
- rutas de assets generados;
- la disposición interna de almacenamiento de los ajustes;
- la redacción exacta de los mensajes dirigidos al usuario, que siguen las traducciones.
Protecciones que toda integración necesita
La compuerta del tema. El entorno de ejecución de eventos solo se carga en el tema POM:
if ( ! post_type_exists( 'event' ) ) {
return;
}
Funciones opcionales. Dos partes del modelo son condicionales:
| Función | Condición |
|---|---|
| Las pestañas de registro y asistentes, el panel de asistentes, el botón público | Funcionalidad de asistentes habilitada en los ajustes generales |
| La pestaña de E-Commerce y la ruta de compra | WooCommerce activo |
El código que dé por hecho cualquiera de ellas fallará en los sitios que no las tengan.
Meta opcional. Trata cada clave del array pom como posiblemente ausente. Los eventos guardados antes de que existiera un campo no lo incluyen.
Comportamientos que debes tener en cuenta al diseñar
La inscripción ocurre en la página de agradecimiento. Un pedido pagado no garantiza un asistente. Reconcílialo.
No se envía nada por correo. Ni confirmaciones, ni notificaciones, ni recordatorios. Si tu integración promete alguno, debe enviarlo ella misma.
La capacidad no se aplica en los movimientos manuales. Un organizador puede promocionar por encima del límite.
No hay recurrencia. Cada ocurrencia es su propio evento.
Eliminar un evento elimina los datos de sus asistentes. No hay un almacén separado.
Los registros crean usuarios. El mapa de asistentes está indexado por ID de usuario.
Orden de carga
Registra las integraciones en init con una prioridad posterior, para que el tipo de contenido y las taxonomías existan:
add_action( 'init', 'my_events_integration', 20 );
La pantalla de ajustes, la sección de licencia y el actualizador se cargan antes y de forma independiente al tema, de modo que una integración solo de ajustes no necesita la compuerta del tema.
Multisitio
Todo es por sitio: eventos, asistentes, ajustes y los interruptores de funciones habilitadas. Nada se comparte en una red.
Cuando algo cambia
El registro de cambios documenta los cambios de comportamiento, API, dependencias y versiones. Léelo antes de actualizar un sitio con muchas integraciones y vuelve a ejecutar tu propia verificación contra la lista de identificadores estables anterior.