diff --git a/src/BlockTypes/Checkout.php b/src/BlockTypes/Checkout.php index 38133e31b14..b07f947d2b6 100644 --- a/src/BlockTypes/Checkout.php +++ b/src/BlockTypes/Checkout.php @@ -343,22 +343,21 @@ function( $acc, $method ) { } if ( $is_block_editor && ! $this->asset_data_registry->exists( 'incompatibleExtensions' ) ) { - if ( ! class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) { + if ( ! class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) || ! function_exists( 'get_plugins' ) ) { return; } - if ( ! function_exists( 'get_plugin_data' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - $declared_extensions = \Automattic\WooCommerce\Utilities\FeaturesUtil::get_compatible_plugins_for_feature( 'cart_checkout_blocks' ); + $all_plugins = \get_plugins(); // Note that `get_compatible_plugins_for_feature` calls `get_plugins` internally, so this is already in cache. $incompatible_extensions = array_reduce( $declared_extensions['incompatible'], - function( $acc, $item ) { - $plugin = get_plugin_data( WP_PLUGIN_DIR . '/' . $item ); - $acc[] = [ - 'id' => $plugin['TextDomain'], - 'title' => $plugin['Name'], + function( $acc, $item ) use ( $all_plugins ) { + $plugin = $all_plugins[ $item ] ?? null; + $plugin_id = $plugin['TextDomain'] ?? dirname( $item ); + $plugin_name = $plugin['Name'] ?? $plugin_id; + $acc[] = [ + 'id' => $plugin_id, + 'title' => $plugin_name, ]; return $acc; },