Automattic\WooCommerce\Internal\Admin\Agentic

AgenticSettingsPage::get_providersprivateWC 1.0

Get registered providers.

Each provider should return an array with:

  • id: string (unique identifier, e.g., 'openai')
  • name: string (display name, e.g., 'OpenAI')
  • description: string (optional description)
  • fields: array (settings fields configuration)

Метод класса: AgenticSettingsPage{}

Хуки из метода

Возвращает

Массив. Array of registered providers.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->get_providers();

Код AgenticSettingsPage::get_providers() WC 10.5.1

private function get_providers() {
	$registry = $this->get_registry();

	// Register built-in OpenAI provider.
	$providers = array(
		array(
			'id'          => 'openai',
			'name'        => __( 'ChatGPT', 'woocommerce' ),
			'description' => sprintf(
				/* translators: %s: URL to ChatGPT merchants application page */
				__( 'To get started, <a href="%s" target="_blank">apply to ChatGPT</a>. Once approved, ChatGPT will provide the credentials below.', 'woocommerce' ),
				'https://chatgpt.com/merchants'
			),
			'fields'      => $this->get_openai_fields(),
		),
	);

	/**
	 * Filter to register additional AI agent providers.
	 *
	 * Allows extensions to add their own AI agent provider settings.
	 * Each provider should return an array with id, name, description, and fields.
	 *
	 * @since 10.4.0
	 *
	 * @internal This filter is experimental and behind a non-visible feature flag. Backwards compatibility not guaranted.
	 *
	 * @param array $providers Array of provider configurations.
	 * @param array $registry  Current registry data.
	 */
	$providers = apply_filters( 'woocommerce_agentic_commerce_providers', $providers, $registry );

	// Validate provider structure.
	$validated = array();
	foreach ( $providers as $provider ) {
		if (
			! is_array( $provider )
			|| empty( $provider['id'] )
			|| empty( $provider['name'] )
			|| ! is_array( $provider['fields'] ?? null )
		) {
			continue;
		}

		// Sanitize text fields.
		$provider['id']   = sanitize_key( $provider['id'] );
		$provider['name'] = sanitize_text_field( $provider['name'] );
		if ( ! empty( $provider['description'] ) ) {
			$provider['description'] = wp_kses_post( $provider['description'] );
		}

		$validated[] = $provider;
	}

	return $validated;
}