Automattic\WooCommerce\Internal\Admin\Settings
SettingsUIRequestContext::resolve_settings_ui_page
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() 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;
}