Plugins bloques
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
/**
|
||||
* Carga de datos iniciales (Iniciativas y Líneas de Trabajo)
|
||||
*
|
||||
* @package Bloques_Transicion
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class Bloques_Data_Seeder {
|
||||
|
||||
/**
|
||||
* Cargar todos los datos iniciales
|
||||
*/
|
||||
public static function seed_all() {
|
||||
$result_iniciativas = self::seed_iniciativas();
|
||||
$result_lineas = self::seed_lineas_trabajo();
|
||||
$result_tipos = self::seed_tipos_evento();
|
||||
|
||||
return $result_iniciativas && $result_lineas && $result_tipos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cargar Iniciativas
|
||||
*/
|
||||
public static function seed_iniciativas() {
|
||||
$iniciativas = [
|
||||
[
|
||||
'name' => '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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user