Skip to content

Fix: Only auto register settings if the plugin the connector references is installed and active.#11564

Closed
jorgefilipecosta wants to merge 8 commits intoWordPress:trunkfrom
jorgefilipecosta:codex/connectors-auto-registration-gate
Closed

Fix: Only auto register settings if the plugin the connector references is installed and active.#11564
jorgefilipecosta wants to merge 8 commits intoWordPress:trunkfrom
jorgefilipecosta:codex/connectors-auto-registration-gate

Conversation

@jorgefilipecosta
Copy link
Copy Markdown
Member

@jorgefilipecosta jorgefilipecosta commented Apr 13, 2026

Summary

  • keep connector setting auto-registration unchanged for AI providers
  • only auto-register non-AI connector settings when plugin.is_active exists, is callable, and returns true
  • add focused PHPUnit coverage for the AI and non-AI registration paths
  • The current behavior is wrong if plugin A registers a connector for plugin B we were having a bug where its settings were registered and exposed in REST even if plugin B was not installed and activated. This fixes the issue.

Ticket: https://core.trac.wordpress.org/ticket/65099

Testing

  • Verify the connectors page works as before.
  • Verify the unit tests pass.

@github-actions
Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@jorgefilipecosta jorgefilipecosta force-pushed the codex/connectors-auto-registration-gate branch from 1ca586c to 03be585 Compare April 16, 2026 06:03
@jorgefilipecosta jorgefilipecosta changed the title Connectors: Gate non-AI setting auto-registration Fix: Only auto register settings if the plugin the connector references is installed and active. Apr 19, 2026
@jorgefilipecosta jorgefilipecosta marked this pull request as ready for review April 19, 2026 11:18
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 19, 2026

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props jorgefilipecosta, peterwilsoncc.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Comment thread src/wp-includes/connectors.php Outdated
continue;
}
} else {
if ( ! isset( $connector_data['plugin']['is_active'] ) || ! is_callable( $connector_data['plugin']['is_active'] ) ) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As most non-AI connectors will be registered by the plugin itself, this is probably best treated as an optional argument with the default __return_true.

As is, an active plugin registering a connector will need to do something along the lines of the following even though the registration of the connector indicates the plugin is active:

<?php
/**
 * Plugin name: My connector
 */

function my_plugin_register_connector( $registry ) {
  $args = [...];
  $args['plugin']['is_active'] = function() { return function_exists( 'my_plugin_register_connector' ); };

  // etc
}

add_action( 'wp_connectors_init', 'my_plugin_register_connector' );

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point @peterwilsoncc will make the required updates ☺️

@jorgefilipecosta jorgefilipecosta force-pushed the codex/connectors-auto-registration-gate branch from 5668fdc to 5bb886d Compare April 30, 2026 13:06
Collapse the AI/non-AI branches in _wp_register_default_connector_settings()
into a single is_active callback check. AI providers already get an
is_active callback wired up at registration that delegates to the AI Client
registry, so one path covers both cases.

Add tests for is_active returning true (setting registered) and false
(setting skipped).
The connector registry now defaults plugin.is_active to __return_true when
omitted, so the "is_active missing" scenario can't reach
_wp_register_default_connector_settings(). The remaining returns_true /
returns_false tests cover the gate's actual branches.
Copy link
Copy Markdown
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's much nicer and more flexible 👍🏻

@github-actions
Copy link
Copy Markdown

A commit was made that fixes the Trac ticket referenced in the description of this pull request.

SVN changeset: 62289
GitHub commit: d141ecb

This PR will be closed, but please confirm the accuracy of this and reopen if there is more work to be done.

@github-actions github-actions Bot closed this Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants