Buenas prácticas y consejos
A continuación, se recogen una serie de buenas prácticas y recomendaciones útiles para mantener el plugin ordenado, seguro, escalable y fácil de mantener. Muchas de estas se han aplicado en el desarrollo real del plugin descrito en este conjunto de notas.
📦 Estructura del plugin
- Usa una estructura clara con carpetas
js/,css/,images/,languages/, etc. - Si el plugin crece mucho, considera dividirlo en múltiples archivos PHP (por ejemplo, uno para campos, otro para shortcodes, etc.).
🔐 Seguridad
- Usa
wp_nonce_field()para proteger los formularios. - Verifica los nonces antes de guardar los datos con
wp_verify_nonce(). - Escapa todos los valores mostrados con
esc_html(),esc_attr(),esc_url()según el contexto. - Sanitiza todos los valores entrantes con
sanitize_text_field(),esc_url_raw(), etc.
🧼 Orden y consistencia
- Usa prefijos únicos (
scp_, por ejemplo) para evitar conflictos con otros plugins o temas. - Agrupa los campos personalizados visualmente en
options_groupdentro del backend. - Mantén nombres de campos coherentes y predecibles (mejor
codigo_productoquecodpr). - Separa claramente el código del backend y del frontend.
🔁 Reutilización y escalabilidad
- Usa arrays y bucles para registrar o guardar muchos campos similares.
- Utiliza funciones helper como
scp_mostrar_campo_texto()oscp_mostrar_logo_marca()para evitar duplicación de código. - Añade documentación inline y comentarios descriptivos, sobre todo en funciones que usen lógica condicional.
🧩 Integración con otros plugins
- Usa el sistema de traducción estándar (
__()yesc_html__()) para que WPML o Loco Translate puedan detectar las cadenas. - Considera exportar campos a ACF si en el futuro se quiere usar su interfaz (aunque aquí se usaron metacampos nativos).
🎯 En producción
- No olvides probar el plugin con usuarios con distintos roles.
- Verifica que los campos no visibles en algunos contextos (como PDF si no hay ficha) no rompan el diseño.
- Elimina campos antiguos o en desuso para mantener limpio el
post_meta. - Desactiva cualquier función o shortcode innecesario en versiones finales.