Automattic\WooCommerce\Internal\Admin\Settings

SettingsUIRequestContext::resolve_settings_ui_page │ private static │ WC 1.0

Resolve the Settings UI adapter for a settings page and section.

Method of the class: SettingsUIRequestContext{}

No Hooks.

Returns

SettingsUIPageInterface|null.

Usage

$result = SettingsUIRequestContext::resolve_settings_ui_page( $settings_page, $section ): ?SettingsUIPageInterface;
$settings_page(WC_Settings_Page) (required)
Settings page.
$section(string) (required)
Section id. Empty string means the default section.

SettingsUIRequestContext::resolve_settings_ui_page() code WC 11.1.2

private static function resolve_settings_ui_page( \WC_Settings_Page $settings_page, string $section ): ?SettingsUIPageInterface {
	try {
		$registered_section = SettingsSectionRegistry::get_instance()->get_registered( $settings_page->get_id(), $section );
	} catch ( \Throwable $e ) {
		self::log_resolution_failure( 'Registered settings section', $settings_page->get_id(), $section, $e, __METHOD__ );
		$registered_section = null;
	}

	if ( $registered_section ) {
		if ( $registered_section instanceof SettingsSectionUIPageProviderInterface ) {
			try {
				$settings_ui_page = $registered_section->get_settings_ui_page( $settings_page );
				if ( $settings_ui_page instanceof SettingsUIPageInterface ) {
					return $settings_ui_page;
				}
			} catch ( \Throwable $e ) {
				self::log_resolution_failure( 'Native Settings UI page', $settings_page->get_id(), $section, $e, __METHOD__ );

				// Raise a developer notice here only: this failure still
				// renders through the registered-section adapter, so
				// nothing downstream reports it. Registry lookup failures
				// are environmental, and schema/script-handle failures
				// surface through log_settings_ui_fallback() at render time.
				wc_doing_it_wrong(
					__METHOD__,
					sprintf(
						/* translators: 1: settings page id, 2: settings section id, 3: failure reason. */
						esc_html__( 'The native Settings UI page for page "%1$s" section "%2$s" could not be resolved. Falling back to the default settings adapter. Reason: %3$s', 'woocommerce' ),
						esc_html( $settings_page->get_id() ),
						esc_html( self::get_section_key( $section ) ),
						esc_html( get_class( $e ) . ': ' . $e->getMessage() )
					),
					'11.0.0'
				);
			}
		}

		return new RegisteredSettingsSectionAdapter( $settings_page, $registered_section );
	}

	$settings_ui_page = $settings_page->get_settings_ui_page();
	return $settings_ui_page instanceof SettingsUIPageInterface ? $settings_ui_page : null;
}