Automattic\WooCommerce\Internal\Features

FeaturesController::get_incompatible_pluginspublicWC 1.0

Returns the list of plugins incompatible with a given feature.

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

Хуков нет.

Возвращает

Массив. List of plugins incompatible with the given feature.

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

$FeaturesController = new FeaturesController();
$FeaturesController->get_incompatible_plugins( $feature_id, $plugin_list );
$feature_id(строка) (обязательный)
ID of the feature. Can also be all to denote all features.
$plugin_list(массив) (обязательный)
List of plugins to filter.

Код FeaturesController::get_incompatible_plugins() WC 10.4.3

public function get_incompatible_plugins( $feature_id, $plugin_list ) {
	$incompatibles         = array();
	$plugin_list           = array_diff_key( $plugin_list, array_flip( $this->plugins_excluded_from_compatibility_ui ) );
	$feature_ids           = 'all' === $feature_id ? array_keys( $this->get_feature_definitions() ) : array( $feature_id );
	$only_enabled_features = 'all' === $feature_id;

	// phpcs:enable WordPress.Security.NonceVerification, WordPress.Security.ValidatedSanitizedInput
	foreach ( array_keys( $plugin_list ) as $plugin_name ) {
		if ( ! $this->plugin_util->is_woocommerce_aware_plugin( $plugin_name ) || ! $this->proxy->call_function( 'is_plugin_active', $plugin_name ) ) {
			continue;
		}

		$compatibility_info = $this->get_compatible_features_for_plugin( $plugin_name );
		foreach ( $feature_ids as $feature_id ) {
			$features_considered_incompatible = array_filter(
				$this->plugin_util->get_items_considered_incompatible( $feature_id, $compatibility_info ),
				$only_enabled_features ?
					fn( $id ) => $this->feature_is_enabled( $id ) && ! $this->should_skip_compatibility_checks( $id ) :
					fn( $id ) => ! $this->should_skip_compatibility_checks( $id )
			);
			if ( in_array( $feature_id, $features_considered_incompatible, true ) ) {
				$incompatibles[] = $plugin_name;
			}
		}
	}

	return array_intersect_key( $plugin_list, array_flip( $incompatibles ) );
}