bookingPage = new BookingPage(); $this->loginPage = new LoginPage(); $this->registrationPage = new RegistrationPage( $invites, $policies, $policyVersions, $acceptances ); $this->groupClassPage = new GroupClassPage(); } public function register(): void { add_shortcode( 'us_booking', [ $this->bookingPage, 'render' ] ); add_shortcode( 'us_student_login', [ $this->loginPage, 'render' ] ); add_shortcode( 'us_student_register', [ $this->registrationPage, 'render' ] ); add_shortcode( 'us_group_classes', [ $this->groupClassPage, 'render' ] ); add_action( 'template_redirect', [ $this->registrationPage, 'maybeRedirectToRegistrationPage' ] ); add_action( 'wp_enqueue_scripts', [ $this, 'enqueueAssets' ] ); } public function enqueueAssets(): void { wp_register_style( 'us-scheduler', USC_PLUGIN_URL . 'assets/css/frontend.css', [], USC_VERSION ); $settings = new StudioSettings(); // Stripe.js (loaded from Stripe's CDN per their terms) only when card billing // is available; the payment helper degrades to e-transfer messaging without it. $paymentDeps = []; if ( $settings->isStripeConfigured() ) { // Stripe pins the version in the URL path (/v3/) and forbids self-hosting, // so no query-string version applies here. wp_register_script( 'us-scheduler-stripe', 'https://js.stripe.com/v3/', [], null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion $paymentDeps[] = 'us-scheduler-stripe'; } wp_register_script( 'us-scheduler-payment', USC_PLUGIN_URL . 'assets/js/payment.js', $paymentDeps, USC_VERSION, true ); $data = [ 'restUrl' => rest_url( 'us-scheduler/v1/' ), 'nonce' => wp_create_nonce( 'wp_rest' ), 'stripeKey' => $settings->publishableKey(), ]; // Attach the shared config to the payment helper so it is defined before the // booking/group scripts (which depend on it) run. wp_localize_script( 'us-scheduler-payment', 'usScheduler', $data ); wp_register_script( 'us-scheduler', USC_PLUGIN_URL . 'assets/js/booking.js', [ 'us-scheduler-payment' ], USC_VERSION, true ); wp_register_script( 'us-scheduler-group', USC_PLUGIN_URL . 'assets/js/group-classes.js', [ 'us-scheduler-payment' ], USC_VERSION, true ); } }