/** * Genera calculadora y contenido SEO automáticamente a partir SOLO del título. * Regla: * - Si el post está vacío (sin [ea_calc]) al guardar, * construimos todo y actualizamos el post. */ function ea_calc_autogenerate_if_empty( $post_ID, $post, $update ) { // No tocar revisiones ni autosaves if ( wp_is_post_revision( $post_ID ) ) return; if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; // Traemos el contenido actual (raw para evitar filtros) $current_content = get_post_field( 'post_content', $post_ID, 'raw' ); $title = get_the_title( $post_ID ); // Si ya tiene contenido útil o ya tiene shortcode, no hacemos nada if ( trim( $current_content ) !== '' && strpos( $current_content, '[ea_calc ' ) !== false ) { return; } // Slug base para la calculadora $slug = sanitize_title( $title ); // 1. Elegir plantilla según el título $calc_template = ea_calc_build_calc_template_from_title( $title, $slug ); // 2. Guardar la calculadora en /uploads/ea-calculators/slug.php ea_calc_ensure_dir(); $file_path = ea_calc_file_path( $slug ); @file_put_contents( $file_path, $calc_template['calculator_code'] ); // 3. Generar el cuerpo del post con intro SEO + shortcode + secciones $new_body = ''; $new_body .= '

' . esc_html( $calc_template['intro_p1'] ) . '

'; $new_body .= '

' . esc_html( $calc_template['intro_p2'] ) . '

'; $new_body .= "\n\n" . '[ea_calc slug="'.esc_attr($slug).'"]' . "\n\n"; $new_body .= $calc_template['extra_sections_html']; // ya viene con HTML seguro // 4. Actualizar el post UNA sola vez remove_action( 'save_post', 'ea_calc_autogenerate_if_empty', 20 ); wp_update_post( array( 'ID' => $post_ID, 'post_content' => $new_body, ) ); add_action( 'save_post', 'ea_calc_autogenerate_if_empty', 20, 3 ); } /** * Construye: * - código HTML+CSS+JS limpio de la calculadora * - texto introductorio SEO * - secciones extra (tabla, fórmulas, ejemplos) * según el título. */ function ea_calc_build_calc_template_from_title( $title, $slug ) { $t_lower = strtolower( $title ); // Caso especial reconocido: "kva" y "kw" if ( strpos($t_lower, 'kva') !== false && strpos($t_lower, 'kw') !== false ) { // ---------- Calculadora kVA -> kW ---------- // Fórmula real: kW = kVA × FP $calculator_code = '

'.esc_html($title).'

'; $intro_p1 = "Convierte kVA a kW en segundos con factor de potencia real. Ideal para selección de equipos eléctricos."; $intro_p2 = "Ingresa la potencia aparente (kVA) y el factor de potencia (FP) para obtener la potencia activa en kW con explicación paso a paso."; $extra_sections_html = '

¿Cómo funciona la conversión de kVA a kW?

Fórmula principal: kW = kVA × FP

Donde FP (factor de potencia) normalmente está entre 0.8 y 0.95 en motores industriales. Un FP bajo significa más potencia aparente para la misma potencia real.

Tabla rápida de referencia

kVA FP kW
100.808.0
250.8521.25
500.9045.0
750.9571.25
1000.8080.0

Ejemplo práctico de ingeniería

Supongamos una carga de 75 kVA con FP 0.85. La potencia activa será:
kW = 75 × 0.85 = 63.75 kW.

Este valor es el que realmente factura la empresa en energía activa y el que usas para estimar capacidad térmica del conductor, selección de transformador y dimensionamiento de generador.

Buenas prácticas

'; return array( 'calculator_code' => $calculator_code, 'intro_p1' => $intro_p1, 'intro_p2' => $intro_p2, 'extra_sections_html' => $extra_sections_html, ); } // ---------- Fallback genérico ---------- // Plantilla neutra que multiplica Valor A * Valor B solo para tener algo funcional. $calculator_code = '

'.esc_html($title).'

'; $intro_p1 = "Calculadora automática basada en el título: ". $title .". Ingresa valores y obtén el resultado al instante."; $intro_p2 = "Incluye campo de entrada, resultado en vivo y opciones para restablecer y copiar."; $extra_sections_html = '

¿Cómo usar esta calculadora?

1. Ingresa dos valores numéricos.
2. Pulsa “Calcular”.
3. Copia el resultado si lo deseas.

Notas importantes

'; return array( 'calculator_code' => $calculator_code, 'intro_p1' => $intro_p1, 'intro_p2' => $intro_p2, 'extra_sections_html' => $extra_sections_html, ); } // Enganchamos nuestro autogenerador DESPUÉS de que WP guarda el post add_action( 'save_post', 'ea_calc_autogenerate_if_empty', 20, 3 );