Point plugin metadata links at Unsupervised and Gitea
CI / No Debug Code (pull_request) Successful in 4s
CI / Tests (PHP 8.2) (pull_request) Successful in 39s
CI / Tests (PHP 8.1) (pull_request) Successful in 1m21s
CI / Coding Standards (pull_request) Successful in 2m52s
CI / PHPStan (pull_request) Successful in 2m53s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m36s
CI / Build Plugin Zip (pull_request) Skipped
CI / No Debug Code (pull_request) Successful in 4s
CI / Tests (PHP 8.2) (pull_request) Successful in 39s
CI / Tests (PHP 8.1) (pull_request) Successful in 1m21s
CI / Coding Standards (pull_request) Successful in 2m52s
CI / PHPStan (pull_request) Successful in 2m53s
CI / Tests (PHP 8.3) (pull_request) Successful in 2m36s
CI / Build Plugin Zip (pull_request) Skipped
Make the "By Unsupervised" author link go to https://unsupervised.ca (via a new Author URI header) and the plugin site / "View details" link point at the Gitea project instead of WordPress.org. Core's "View details" link opened a thickbox iframe against the WordPress.org plugin-information API, which 404s ("Plugin not found") for this off-directory plugin. A plugin_row_meta filter now replaces it with a new-tab link to the matching Gitea release tag page; embedding Gitea in the iframe is blocked by its X-Frame-Options anyway. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
@@ -35,6 +35,43 @@ class UpdateChecker {
|
||||
|
||||
public function register(): void {
|
||||
add_filter( 'update_plugins_' . self::HOSTNAME, [ $this, 'provideUpdate' ], 10, 3 );
|
||||
add_filter( 'plugin_row_meta', [ $this, 'filterRowMeta' ], 10, 2 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace core's "View details" link on the Plugins screen.
|
||||
*
|
||||
* Core points that link at the WordPress.org plugin-information API
|
||||
* (`plugin-install.php?tab=plugin-information&plugin=…`), which 404s in a
|
||||
* "Plugin not found" iframe for this off-directory plugin. We swap it for a
|
||||
* direct link to the matching Gitea release tag page, opened in a new tab —
|
||||
* embedding Gitea in the thickbox iframe would be blocked by its
|
||||
* `X-Frame-Options: SAMEORIGIN` anyway.
|
||||
*
|
||||
* @param mixed $meta Row-meta links for the plugin.
|
||||
* @param mixed $plugin_file Plugin file the meta belongs to.
|
||||
* @return mixed The (possibly modified) row-meta array.
|
||||
*/
|
||||
public function filterRowMeta( mixed $meta, mixed $plugin_file ): mixed {
|
||||
if ( ! is_array( $meta ) || plugin_basename( USC_PLUGIN_FILE ) !== $plugin_file ) {
|
||||
return $meta;
|
||||
}
|
||||
|
||||
// Drop core's WordPress.org "View details" thickbox link.
|
||||
$meta = array_values(
|
||||
array_filter(
|
||||
$meta,
|
||||
static fn( $item ): bool => ! ( is_string( $item ) && str_contains( $item, 'open-plugin-details-modal' ) )
|
||||
)
|
||||
);
|
||||
|
||||
$meta[] = sprintf(
|
||||
'<a href="%s" target="_blank" rel="noopener noreferrer">%s</a>',
|
||||
esc_url( self::REPO_URL . '/releases/tag/v' . USC_VERSION ),
|
||||
esc_html__( 'View details', 'unsupervised-schedular' )
|
||||
);
|
||||
|
||||
return $meta;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user