load_dependencies(); $this->init_hooks(); } /** * Cargar dependencias */ private function load_dependencies() { // Core require_once BLOQUES_PLUGIN_DIR . 'includes/class-post-types.php'; require_once BLOQUES_PLUGIN_DIR . 'includes/class-taxonomies.php'; require_once BLOQUES_PLUGIN_DIR . 'includes/class-acf-fields.php'; require_once BLOQUES_PLUGIN_DIR . 'includes/class-admin-menu.php'; require_once BLOQUES_PLUGIN_DIR . 'includes/class-shortcodes.php'; require_once BLOQUES_PLUGIN_DIR . 'includes/class-data-seeder.php'; } /** * Inicializar hooks */ private function init_hooks() { // Activación y desactivación register_activation_hook(__FILE__, [$this, 'activate']); register_deactivation_hook(__FILE__, [$this, 'deactivate']); // Inicialización add_action('init', [$this, 'init'], 0); add_action('plugins_loaded', [$this, 'load_textdomain']); // Admin if (is_admin()) { add_action('admin_enqueue_scripts', [$this, 'admin_assets']); } // Frontend add_action('wp_enqueue_scripts', [$this, 'frontend_assets']); } /** * Inicializar componentes */ public function init() { // Registrar CPTs y taxonomías Bloques_Post_Types::register(); Bloques_Taxonomies::register(); // Registrar campos ACF if (class_exists('ACF')) { Bloques_ACF_Fields::register(); } // Registrar menú admin Bloques_Admin_Menu::register(); // Registrar shortcodes Bloques_Shortcodes::register(); } /** * Cargar traducciones */ public function load_textdomain() { load_plugin_textdomain( 'bloques-transicion', false, dirname(BLOQUES_PLUGIN_BASENAME) . '/languages/' ); } /** * Assets del admin */ public function admin_assets($hook) { $screen = get_current_screen(); // Solo cargar en páginas del plugin if ($screen && ( strpos($screen->id, 'bloques') !== false || in_array($screen->post_type, ['actuacion', 'recurso_bloques', 'evento_bloques']) )) { wp_enqueue_style( 'bloques-admin', BLOQUES_PLUGIN_URL . 'assets/css/admin.css', [], BLOQUES_VERSION ); wp_enqueue_script( 'bloques-admin', BLOQUES_PLUGIN_URL . 'assets/js/admin.js', ['jquery'], BLOQUES_VERSION, true ); } } /** * Assets del frontend */ public function frontend_assets() { wp_enqueue_style( 'bloques-frontend', BLOQUES_PLUGIN_URL . 'assets/css/frontend.css', [], BLOQUES_VERSION ); wp_enqueue_script( 'bloques-frontend', BLOQUES_PLUGIN_URL . 'assets/js/frontend.js', ['jquery'], BLOQUES_VERSION, true ); wp_localize_script('bloques-frontend', 'bloquesData', [ 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('bloques_nonce'), 'pluginUrl' => BLOQUES_PLUGIN_URL, ]); // Añadir CSS personalizado $custom_css = get_option('bloques_custom_css', ''); if (!empty($custom_css)) { wp_add_inline_style('bloques-frontend', $custom_css); } } /** * Activación del plugin */ public function activate() { // Registrar CPTs y taxonomías Bloques_Post_Types::register(); Bloques_Taxonomies::register(); // Flush rewrite rules flush_rewrite_rules(); // Marcar como activado update_option('bloques_transicion_activated', true); update_option('bloques_transicion_version', BLOQUES_VERSION); } /** * Desactivación del plugin */ public function deactivate() { flush_rewrite_rules(); } } /** * Iniciar el plugin */ function bloques_transicion() { return Bloques_Transicion::get_instance(); } // Arrancar bloques_transicion();