Edición: Referencia para Desarrolladores — Free (v2.0+) y PRO (v5.0+) | Estándares: WPCS, POO y WooCommerce HPOS
Esta sección está dirigida a desarrolladores WordPress/WooCommerce, agencias e integradores técnicos que necesitan comprender la estructura interna de archivos, las convenciones de nombres, el ciclo de vida de inicialización y la compatibilidad con High-Performance Order Storage (HPOS / Custom Order Tables) de Modal COD Form.
1. Convenciones de Nombres y Prefijos (Free vs. PRO)
Para garantizar cero colisiones con otros plugins y una transición transparente entre la versión de WordPress.org y la versión comercial, se aplican las siguientes convenciones:
| Elemento Técnico | Modal COD Form Free (modal-cod-form v2.0) |
Modal COD Form PRO (cod-form-wc-dc v5.0) |
|---|---|---|
| Prefijo de Clases PHP | MODALCODF_* (ej. MODALCODF_Order_Creator) |
PRCOD_* (ej. PRCOD_Order_Creator) |
| Prefijo de Funciones | modalcodf_* |
prcod_* |
| Instancia Global Freemius | mcfp_fs() (Product ID: 34746) |
mcfp_fs() (Product ID: 34746) |
Claves en wp_options |
cod_form_* (Compartidas con PRO) |
cod_form_* y prcod_* |
| Post Meta de Producto | _cod_disable_button (Compartido) |
_cod_disable_button (Compartido) |
| Selectores DOM Principales | #codFormModal, #modal_checkout, #checkout_form |
#codFormModal, #modal_checkout, #checkout_form |
2. Estructura de Directorios del Plugin PRO (cod-form-wc-dc)
cod-form-wc-dc/
├── cod-form-wc-dc.php # Bootstrap principal + Inicialización Freemius SDK (mcfp_fs())
├── includes/
│ ├── loader.php # Cargador central modular
│ ├── handler-license.php # Puente desacoplado del subsistema de licencias (hooks/filters)
│ ├── license/ # Migración pasiva SLM -> Freemius, API, Cron diario y UI
│ ├── admin/
│ │ ├── class-prcod-admin-loader.php # Inicializador del panel de administración
│ │ ├── class-prcod-product-fields.php # Meta _cod_disable_button por producto
│ │ ├── class-prcod-google-maps-admin-ui.php # Metabox HPOS de validación de direcciones
│ │ └── settings/ # Singleton PRCOD_Settings_Manager + 12 clases PRCOD_Settings_*
│ ├── woo-states-places/ # Datasets de países (states/, places/, district/PEV2.php)
│ ├── utils/ # Helpers de precios, envíos HMAC, upsells y formato
│ └── woocommerce-extensions/
│ ├── woo-ext-ajax.php # Bootstrap de controladores AJAX
│ ├── woo-ext-shortcodes.php # Motor multi-instancia [custom_add_to_cart_button] y [cod_menu_cart]
│ ├── woo-ext-templates.php # Filtro woocommerce_locate_template
│ ├── woo-ext-postypes.php # Registro de CPTs (upsells, downsells, quantity_offers, abandoned_carts)
│ ├── woo-ext-webhook.php # Despachador de los 4 Webhooks salientes y logs
│ ├── woo-ext-custom-fields/ # Metaboxes DRY y cpt-admin-helpers.php con Live Preview
│ ├── fraud-prevention/ # PRCOD_Google_Maps_Validator
│ └── ajax/ # 7 Clases controladoras: Ajax, Order_Creator, Cart, Shipping, Downsell, Location, Abandoned_Cart
├── templates/ # Plantillas del modal, tabla, upsells, downsells y overrides WC
└── assets/ # JS, CSS con variables dinámicas y fuentes locales .woff2
3. Compatibilidad Nativa con WooCommerce HPOS (Custom Order Tables)
Tanto la edición Free como la edición PRO están diseñadas para operar con las tablas personalizadas de pedidos de WooCommerce (wp_wc_orders):
- Toda lectura y escritura de metadatos de órdenes utiliza los métodos orientados a objetos de
WC_Order($order->get_meta(),$order->update_meta_data()y$order->save()) en lugar de funciones heredadas comoget_post_meta()/update_post_meta(). - El validador antifraude (
PRCOD_Fraud_Prevention_Validator::get_recent_orders_by_meta()) consulta pedidos recientes mediantewc_get_orders()compatible con HPOS. - El metabox de Google Maps (
PRCOD_Google_Maps_Admin_UI) se registra dinámicamente tanto en la pantalla clásicashop_ordercomo enwc_get_page_screen_id('shop-order').