Files
tangente-bloques-en-transicion/bloques-transicion/includes/class-taxonomies.php
2026-02-14 18:21:10 +01:00

165 lines
8.8 KiB
PHP

<?php
/**
* Registro de Taxonomías personalizadas
*
* @package Bloques_Transicion
*/
if (!defined('ABSPATH')) {
exit;
}
class Bloques_Taxonomies {
/**
* Registrar todas las taxonomías
*/
public static function register() {
self::register_iniciativa();
self::register_linea_trabajo();
self::register_tipo_evento();
}
/**
* Taxonomía: Iniciativas
*/
private static function register_iniciativa() {
$labels = [
'name' => _x('Iniciativas', 'taxonomy general name', 'bloques-transicion'),
'singular_name' => _x('Iniciativa', 'taxonomy singular name', 'bloques-transicion'),
'search_items' => __('Buscar Iniciativas', 'bloques-transicion'),
'popular_items' => __('Iniciativas populares', 'bloques-transicion'),
'all_items' => __('Todas las Iniciativas', 'bloques-transicion'),
'parent_item' => __('Iniciativa padre', 'bloques-transicion'),
'parent_item_colon' => __('Iniciativa padre:', 'bloques-transicion'),
'edit_item' => __('Editar Iniciativa', 'bloques-transicion'),
'view_item' => __('Ver Iniciativa', 'bloques-transicion'),
'update_item' => __('Actualizar Iniciativa', 'bloques-transicion'),
'add_new_item' => __('Añadir nueva Iniciativa', 'bloques-transicion'),
'new_item_name' => __('Nombre de nueva Iniciativa', 'bloques-transicion'),
'separate_items_with_commas' => __('Separar iniciativas con comas', 'bloques-transicion'),
'add_or_remove_items' => __('Añadir o eliminar iniciativas', 'bloques-transicion'),
'choose_from_most_used' => __('Elegir de las más usadas', 'bloques-transicion'),
'not_found' => __('No se encontraron iniciativas.', 'bloques-transicion'),
'no_terms' => __('No hay iniciativas', 'bloques-transicion'),
'menu_name' => __('Iniciativas', 'bloques-transicion'),
'items_list_navigation' => __('Navegación de iniciativas', 'bloques-transicion'),
'items_list' => __('Lista de iniciativas', 'bloques-transicion'),
'back_to_items' => __('← Volver a Iniciativas', 'bloques-transicion'),
];
$args = [
'labels' => $labels,
'hierarchical' => true, // Como categorías
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'show_in_rest' => true,
'rewrite' => ['slug' => 'bloques/iniciativa', 'with_front' => false],
'query_var' => true,
];
// Asociar a todos los CPTs de Bloques + entradas (noticias)
$post_types = ['actuacion', 'recurso_bloques', 'evento_bloques', 'post'];
register_taxonomy('iniciativa', $post_types, $args);
}
/**
* Taxonomía: Líneas de Trabajo
*/
private static function register_linea_trabajo() {
$labels = [
'name' => _x('Líneas de Trabajo', 'taxonomy general name', 'bloques-transicion'),
'singular_name' => _x('Línea de Trabajo', 'taxonomy singular name', 'bloques-transicion'),
'search_items' => __('Buscar Líneas de Trabajo', 'bloques-transicion'),
'popular_items' => __('Líneas de Trabajo populares', 'bloques-transicion'),
'all_items' => __('Todas las Líneas de Trabajo', 'bloques-transicion'),
'parent_item' => __('Línea de Trabajo padre', 'bloques-transicion'),
'parent_item_colon' => __('Línea de Trabajo padre:', 'bloques-transicion'),
'edit_item' => __('Editar Línea de Trabajo', 'bloques-transicion'),
'view_item' => __('Ver Línea de Trabajo', 'bloques-transicion'),
'update_item' => __('Actualizar Línea de Trabajo', 'bloques-transicion'),
'add_new_item' => __('Añadir nueva Línea de Trabajo', 'bloques-transicion'),
'new_item_name' => __('Nombre de nueva Línea de Trabajo', 'bloques-transicion'),
'separate_items_with_commas' => __('Separar líneas con comas', 'bloques-transicion'),
'add_or_remove_items' => __('Añadir o eliminar líneas', 'bloques-transicion'),
'choose_from_most_used' => __('Elegir de las más usadas', 'bloques-transicion'),
'not_found' => __('No se encontraron líneas de trabajo.', 'bloques-transicion'),
'no_terms' => __('No hay líneas de trabajo', 'bloques-transicion'),
'menu_name' => __('Líneas de Trabajo', 'bloques-transicion'),
'items_list_navigation' => __('Navegación de líneas', 'bloques-transicion'),
'items_list' => __('Lista de líneas', 'bloques-transicion'),
'back_to_items' => __('← Volver a Líneas de Trabajo', 'bloques-transicion'),
];
$args = [
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'show_in_rest' => true,
'rewrite' => ['slug' => 'bloques/linea-trabajo', 'with_front' => false],
'query_var' => true,
];
$post_types = ['actuacion', 'recurso_bloques', 'evento_bloques', 'post'];
register_taxonomy('linea_trabajo', $post_types, $args);
}
/**
* Taxonomía: Tipo de Evento
*/
private static function register_tipo_evento() {
$labels = [
'name' => _x('Tipos de Evento', 'taxonomy general name', 'bloques-transicion'),
'singular_name' => _x('Tipo de Evento', 'taxonomy singular name', 'bloques-transicion'),
'search_items' => __('Buscar Tipos', 'bloques-transicion'),
'popular_items' => __('Tipos populares', 'bloques-transicion'),
'all_items' => __('Todos los Tipos', 'bloques-transicion'),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __('Editar Tipo', 'bloques-transicion'),
'view_item' => __('Ver Tipo', 'bloques-transicion'),
'update_item' => __('Actualizar Tipo', 'bloques-transicion'),
'add_new_item' => __('Añadir nuevo Tipo', 'bloques-transicion'),
'new_item_name' => __('Nombre del nuevo Tipo', 'bloques-transicion'),
'separate_items_with_commas' => __('Separar tipos con comas', 'bloques-transicion'),
'add_or_remove_items' => __('Añadir o eliminar tipos', 'bloques-transicion'),
'choose_from_most_used' => __('Elegir de los más usados', 'bloques-transicion'),
'not_found' => __('No se encontraron tipos.', 'bloques-transicion'),
'no_terms' => __('No hay tipos', 'bloques-transicion'),
'menu_name' => __('Tipos de Evento', 'bloques-transicion'),
'items_list_navigation' => __('Navegación de tipos', 'bloques-transicion'),
'items_list' => __('Lista de tipos', 'bloques-transicion'),
'back_to_items' => __('← Volver a Tipos', 'bloques-transicion'),
];
$args = [
'labels' => $labels,
'hierarchical' => false, // Como etiquetas (permite múltiple selección)
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => false,
'show_in_rest' => true,
'rewrite' => ['slug' => 'bloques/tipo-evento', 'with_front' => false],
'query_var' => true,
];
register_taxonomy('tipo_evento', ['evento_bloques'], $args);
}
/**
* Obtener todas las taxonomías del plugin
*/
public static function get_taxonomies() {
return ['iniciativa', 'linea_trabajo', 'tipo_evento'];
}
}