provider = $this->resolve_provider(); } /** * Get the resolved multilingual provider. * * @since 2.11.0 * @return Provider Active provider instance, or Null_Provider when none is available. */ public function provider(): Provider { return $this->provider; } /** * Resolve which provider to use based on the active multilingual plugin. * * Resolution order: * 1. WPML_Provider when WPML 4.5+ is active. * 2. Null_Provider otherwise. * 3. The `srfm_multilingual_provider` filter may override the default with any * {@see Provider} implementation; non-conforming values are ignored. * * @since 2.11.0 * @return Provider Resolved provider instance. */ protected function resolve_provider(): Provider { $wpml = new WPML_Provider(); $provider = $wpml->is_active() ? $wpml : new Null_Provider(); /** * Filter the resolved multilingual provider. * * Third parties can return their own {@see Provider} implementation to * replace SureForms' default resolution. Non-conforming return values are ignored. * * @since 2.11.0 * @param Provider $provider The resolved provider instance. */ $filtered = apply_filters( 'srfm_multilingual_provider', $provider ); if ( $filtered instanceof Provider ) { return $filtered; } return $provider; } }