'Oficina de Transición Justa', 'slug' => 'oficina-transicion-justa', 'description' => 'Acompañamiento técnico, asesoramiento y formación para personas y comunidades interesadas en impulsar iniciativas de cambio.', 'meta' => [ 'ubicacion_texto' => 'Puente y Villa de Vallecas', 'estado' => 'Abierta - consultas permanentes', 'color' => '#1E6B52', ], ], [ 'name' => 'Coles en transición', 'slug' => 'coles-transicion', 'description' => 'Acompañamiento en la elaboración e implementación de planes de adaptación climática en centros educativos y otras iniciativas de cambio con participación de la comunidad escolar.', 'meta' => [ 'ubicacion_texto' => '7 centros en Puente y Villa de Vallecas', 'estado' => 'En marcha', 'color' => '#4A9B7F', ], ], [ 'name' => 'Comunidad energética', 'slug' => 'comunidad-energetica', 'description' => 'Acompañamiento en la creación de la Comunidad Energética Vallekana para producir, compartir y gestionar energía renovable.', 'meta' => [ 'ubicacion_texto' => 'Puente de Vallecas', 'estado' => 'En proceso de constitución', 'color' => '#F4A261', ], ], [ 'name' => 'Creación de redes', 'slug' => 'creacion-redes', 'description' => 'Intercambio de conocimientos y participación. Acompañamiento e impulso del funcionamiento y la creación de redes locales y estatales multiactor para el aprendizaje y la puesta en marcha de acciones hacia la transición justa.', 'meta' => [ 'ubicacion_texto' => 'Madrid, Cataluña y Valencia', 'estado' => 'En proceso', 'color' => '#E76F51', ], ], ]; return self::insert_terms($iniciativas, 'iniciativa'); } /** * Cargar Líneas de Trabajo */ public static function seed_lineas_trabajo() { $lineas = [ [ 'name' => 'Energía', 'slug' => 'energia', 'description' => 'Rehabilitación edificios, comunidades energéticas y autoconsumo renovable', 'meta' => [ 'color' => '#F4A261', ], ], [ 'name' => 'Cuidados', 'slug' => 'cuidados', 'description' => 'Redes de apoyo mutuo y espacios vecinales', 'meta' => [ 'color' => '#E9C46A', ], ], [ 'name' => 'Alimentación', 'slug' => 'alimentacion', 'description' => 'Alimentación sostenible y saludable y redes de consumo', 'meta' => [ 'color' => '#2A9D8F', ], ], [ 'name' => 'Movilidad', 'slug' => 'movilidad', 'description' => 'Movilidad sostenible, uso de la bicicleta y espacio público', 'meta' => [ 'color' => '#264653', ], ], [ 'name' => 'Renaturalización', 'slug' => 'renaturalizacion', 'description' => 'Renaturalización de comunidades y patios escolares', 'meta' => [ 'color' => '#1E6B52', ], ], [ 'name' => 'Reutilización', 'slug' => 'reutilizacion', 'description' => 'Economía circular y consumo colaborativo', 'meta' => [ 'color' => '#E76F51', ], ], ]; return self::insert_terms($lineas, 'linea_trabajo'); } /** * Cargar Tipos de Evento */ public static function seed_tipos_evento() { $tipos = [ [ 'name' => 'Online', 'slug' => 'online', 'description' => 'Evento que se realiza de forma virtual', ], [ 'name' => 'Presencial', 'slug' => 'presencial', 'description' => 'Evento que se realiza de forma presencial', ], ]; return self::insert_terms($tipos, 'tipo_evento'); } /** * Insertar términos en una taxonomía */ private static function insert_terms($terms, $taxonomy) { $success = true; foreach ($terms as $term_data) { // Verificar si ya existe $existing = term_exists($term_data['slug'], $taxonomy); if ($existing) { $term_id = is_array($existing) ? $existing['term_id'] : $existing; // Actualizar descripción si existe wp_update_term($term_id, $taxonomy, [ 'description' => $term_data['description'] ?? '', ]); } else { // Crear nuevo término $result = wp_insert_term( $term_data['name'], $taxonomy, [ 'slug' => $term_data['slug'], 'description' => $term_data['description'] ?? '', ] ); if (is_wp_error($result)) { $success = false; continue; } $term_id = $result['term_id']; } // Guardar meta datos con ACF si está disponible if (!empty($term_data['meta']) && function_exists('update_field')) { foreach ($term_data['meta'] as $key => $value) { update_field($key, $value, $taxonomy . '_' . $term_id); } } } return $success; } /** * Eliminar todos los datos del plugin */ public static function clear_all() { // Eliminar términos de iniciativas $iniciativas = get_terms([ 'taxonomy' => 'iniciativa', 'hide_empty' => false, ]); foreach ($iniciativas as $term) { wp_delete_term($term->term_id, 'iniciativa'); } // Eliminar términos de líneas de trabajo $lineas = get_terms([ 'taxonomy' => 'linea_trabajo', 'hide_empty' => false, ]); foreach ($lineas as $term) { wp_delete_term($term->term_id, 'linea_trabajo'); } // Eliminar tipos de evento $tipos = get_terms([ 'taxonomy' => 'tipo_evento', 'hide_empty' => false, ]); foreach ($tipos as $term) { wp_delete_term($term->term_id, 'tipo_evento'); } return true; } }