Automattic\WooCommerce\Internal\Features

FeaturesController::declare_compatibilitypublicWC 1.0

Declare (in)compatibility with a given feature for a given plugin.

This method MUST be executed from inside a handler for the before_woocommerce_init

The plugin name is expected to be in the form 'directory/file.php' and be one of the keys of the array returned by 'get_plugins', but this won't be checked. Plugins are expected to use FeaturesUtil::declare_compatibility instead, passing the full plugin file path instead of the plugin name.

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

Хуков нет.

Возвращает

true|false. True on success, false on error (feature doesn't exist or not inside the required hook).

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

$FeaturesController = new FeaturesController();
$FeaturesController->declare_compatibility( $feature_id, $plugin_file, $positive_compatibility ): bool;
$feature_id(строка) (обязательный)
Unique feature id.
$plugin_file(строка) (обязательный)
Plugin file path, either full or in the form 'directory/file.php'.
$positive_compatibility(true|false)
True if the plugin declares being compatible with the feature, false if it declares being incompatible.
По умолчанию: true

Код FeaturesController::declare_compatibility() WC 10.3.6

public function declare_compatibility( string $feature_id, string $plugin_file, bool $positive_compatibility = true ): bool {
	if ( ! $this->proxy->call_function( 'doing_action', 'before_woocommerce_init' ) ) {
		$class_and_method = ( new \ReflectionClass( $this ) )->getShortName() . '::' . __FUNCTION__;
		/* translators: 1: class::method 2: before_woocommerce_init */
		$this->proxy->call_function( 'wc_doing_it_wrong', $class_and_method, sprintf( __( '%1$s should be called inside the %2$s action.', 'woocommerce' ), $class_and_method, 'before_woocommerce_init' ), '7.0' );
		return false;
	}
	if ( ! $this->feature_exists( $feature_id ) ) {
		return false;
	}

	if ( $this->lazy ) {
		// Lazy mode: Queue to be normalized later.
		$this->pending_declarations[] = array( $feature_id, $plugin_file, $positive_compatibility );
		return true;
	}

	// Late call: Normalize and register immediately.
	return $this->register_compatibility_internal( $feature_id, $plugin_file, $positive_compatibility );
}