*/ public static function get_public_config(): array { return array( 'enabled' => true, 'abStatus' => Ab_Testing::get_config()['status'], 'eventName' => 'forwp_style_switcher', ); } /** * @param array $payload Event payload. * @return array */ public static function track( string $event, array $payload = array() ): array { $data = array_merge( array( 'event' => $event, 'timestamp' => time(), ), $payload ); /** * Filter analytics payload before dispatch. * * @param array $data Event data. * @param string $event Event name. */ $data = apply_filters( 'forwp_style_switcher_analytics_event', $data, $event ); /** * Fires when a style switcher analytics event should be recorded. * * Use for server-side integrations (custom logging, webhooks, etc.). * * @param array $data Event data. * @param string $event Event name. */ do_action( 'forwp_style_switcher_analytics_track', $data, $event ); return $data; } /** * @param array{cohort: string, slug: string} $result Assignment. * @param array $config A/B settings. */ public static function on_ab_assigned( array $result, array $config ): void { self::track( 'ab_assigned', array( 'cohort' => $result['cohort'], 'variation' => $result['slug'], 'split_a' => $config['traffic_split_a'] ?? null, 'split_b' => $config['traffic_split_b'] ?? null, ) ); } }