admin_url( 'admin-ajax.php' ), 'restUrl' => esc_url_raw( rest_url( '100prints/v1/' ) ), 'nonce' => wp_create_nonce( 'wp_rest' ), ] ); } /** * Handle redirect to dashboard page on initial activation. */ public function handle_welcome_redirect() { if ( get_transient( '100prints_welcome' ) && ! isset( $_GET['activate-multi'] ) ) { delete_transient( '100prints_welcome' ); wp_safe_redirect( admin_url( 'admin.php?page=100prints&welcome=1' ) ); exit; } } /** * Register settings for settings page. */ public function register_plugin_settings() { register_setting( '100p_settings_group', '100p_settings', [ 'sanitize_callback' => [ $this, 'sanitize_settings' ], 'default' => hundred_prints_default_settings(), ] ); } /** * Sanitize plugin settings array. */ public function sanitize_settings( $input ) { $sanitized = hundred_prints_sanitize_settings( $input ); if ( class_exists( 'Hundred_Prints_Analytics_Service' ) ) { $analytics_service = new Hundred_Prints_Analytics_Service(); $analytics_service->prune_old_logs( $sanitized['log_retention_days'] ); } return $sanitized; } // ── Render templates for pages ──────────────────────────── public function render_dashboard_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-dashboard.php'; } public function render_templates_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-templates.php'; } public function render_generation_history_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-generation-history.php'; } public function render_analytics_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-analytics.php'; } public function render_connections_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-connections.php'; } public function render_settings_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-settings.php'; } public function render_help_page() { require_once HUNDRED_PRINTS_PATH . 'admin/pages/page-help.php'; } }