Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions src/wp-includes/connectors.php
Original file line number Diff line number Diff line change
Expand Up @@ -552,9 +552,19 @@ function _wp_register_default_connector_settings(): void {
continue;
}

// For AI providers, skip if the provider is not in the AI Client registry.
if ( 'ai_provider' === $connector_data['type'] && ! $ai_registry->hasProvider( $connector_id ) ) {
continue;
if ( 'ai_provider' === $connector_data['type'] ) {
// For AI providers, skip if the provider is not in the AI Client registry.
if ( ! $ai_registry->hasProvider( $connector_id ) ) {
continue;
}
} else {
if ( ! isset( $connector_data['plugin']['is_active'] ) || ! is_callable( $connector_data['plugin']['is_active'] ) ) {
continue;
}

if ( ! call_user_func( $connector_data['plugin']['is_active'] ) ) {
continue;
}
}

register_setting(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?php

/**
* Tests for _wp_register_default_connector_settings().
*
* @group connectors
* @covers ::_wp_register_default_connector_settings
*/
class Tests_Connectors_WpRegisterDefaultConnectorSettings extends WP_UnitTestCase {

const CONNECTOR_ID = 'wp_test_non_ai_connector';
const SETTING_NAME = 'connectors_test_non_ai_api_key';

/**
* Snapshot of registered settings before each test.
*
* @var array
*/
private array $original_registered_settings = array();

/**
* Snapshots the registered settings before each test.
*/
public function set_up(): void {
parent::set_up();

global $wp_registered_settings;
$this->original_registered_settings = $wp_registered_settings;
}

/**
* Removes the test connector and restores registered settings.
*/
public function tear_down(): void {
$registry = WP_Connector_Registry::get_instance();
if ( null !== $registry && $registry->is_registered( self::CONNECTOR_ID ) ) {
$registry->unregister( self::CONNECTOR_ID );
}

global $wp_registered_settings;
$wp_registered_settings = $this->original_registered_settings;

parent::tear_down();
}

/**
* @ticket 64730
*/
public function test_non_ai_connector_skipped_when_is_active_missing(): void {
WP_Connector_Registry::get_instance()->register(
self::CONNECTOR_ID,
array(
'name' => 'Test Non-AI Connector',
'description' => '',
'type' => 'spam_filtering',
'authentication' => array(
'method' => 'api_key',
'setting_name' => self::SETTING_NAME,
),
)
);

_wp_register_default_connector_settings();

$this->assertArrayNotHasKey( self::SETTING_NAME, get_registered_settings() );
}
}
Loading