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_type y event_category, y post_tag compartidos;
  • las claves meta event_start_date, event_end_date, event_start_datetime, event_end_datetime, hide_event_date, event_all_day;
  • el array meta pom y las claves documentadas en Content model;
  • event_assistants, indexado por ID de usuario, con valores status de vacío, waiting-list y cancelled;
  • attending_users, y el meta de usuario attended_events.

Shortcodes

  • [web_event_search_form] con hide_calendar, error_msg y el_class;
  • [pom_events_fullcalendar] con el_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.