register(); Chatbot::instance()->register(); Shortcodes::instance()->register(); Blocks::instance()->register(); Webhook::instance()->register(); IndexNow::instance()->register(); Seo_Meta::instance()->register(); Images::instance()->register(); Content::instance()->register(); Latest_Posts::instance()->register(); Connect::instance()->register(); Site_Members::instance()->register(); Site_Identity::instance()->register(); Post_Meta::instance()->register(); add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_frontend_assets' ] ); add_filter( 'plugin_action_links_' . AGENTSIA_AGENTS_BASENAME, [ $this, 'action_links' ] ); } public function enqueue_frontend_assets(): void { wp_enqueue_style( 'agentsia-agents-frontend', AGENTSIA_AGENTS_URL . 'assets/css/frontend.css', [], AGENTSIA_AGENTS_VERSION ); } public static function activate(): void { $existing = get_option( self::OPTION_KEY ); if ( ! is_array( $existing ) ) { add_option( self::OPTION_KEY, self::default_settings() ); } } public static function deactivate(): void {} public static function default_settings(): array { return [ 'api_base' => AGENTSIA_AGENTS_DEFAULT_API_BASE, 'api_key' => '', 'widget_token' => '', 'chatbot_config_id' => '', // Version d'embed du chatbot : '' = dernière (active), sinon numéro épinglé + URL résolue. 'chatbot_version' => '', 'chatbot_version_url' => '', 'enable_global' => 0, 'exclude_paths' => '', 'mode' => 'bubble', 'position' => 'right', 'bubble_label' => __( 'Discuter', 'agentsia-agents' ), 'header_text' => '', 'accent_color' => '', 'header_bg_color' => '', 'header_text_color' => '', 'user_bubble_bg' => '', 'user_bubble_text' => '', 'assistant_bubble_bg' => '', 'assistant_bubble_text' => '', 'default_booking_slug' => '', 'quota_exceeded_message' => '', // Scénario par défaut appliqué sur toutes les pages publiques. // Peut être surchargé par page via le meta box "Agentsia — Chatbot". 'default_scenario' => '', // Affichage par défaut de la bulle flottante. Si "0", la bulle est masquée // et le widget ne peut être ouvert que via window.agentsia.open(). 'show_bubble' => 1, // Sélecteur CSS d'un bouton de la page qui ouvre/ferme le chatbot au clic. 'toggle_selector' => '', // Bouton quand l'assistant est indisponible : disable (grisé) | hide | none. 'toggle_inactive' => 'disable', // Webhook signé (HMAC) appelé par le backend à la fin d'une conversation chatbot. 'webhook_enabled' => 0, 'webhook_secret' => '', // Agentsia may create users with the Editor role (« Auteurs du site »). Administrators of the site only. 'allow_editor_creation' => 0, ]; } public static function get_settings(): array { $settings = get_option( self::OPTION_KEY, [] ); if ( ! is_array( $settings ) ) { $settings = []; } return array_merge( self::default_settings(), $settings ); } public function action_links( array $links ): array { $settings_url = admin_url( 'options-general.php?page=agentsia-agents' ); $custom = [ 'settings' => '' . esc_html__( 'Réglages', 'agentsia-agents' ) . '', ]; return array_merge( $custom, $links ); } }