WC_Helper::get_product_usage_notice_rulespublic staticWC 1.0

Get rules for displaying notice regarding marketplace product usage.

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

Хуков нет.

Возвращает

``Массив

phpcs:ignore``. Squiz.Commenting.FunctionCommentThrowTag.Missing -- As we wrap the throw in a try/catch.

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

$result = WC_Helper::get_product_usage_notice_rules();

Код WC_Helper::get_product_usage_notice_rules() WC 10.3.4

public static function get_product_usage_notice_rules() {
	$cache_key = '_woocommerce_helper_product_usage_notice_rules';
	$data      = get_transient( $cache_key );
	if ( false !== $data ) {
		return $data;
	}

	try {
		$request = WC_Helper_API::get(
			'product-usage-notice-rules',
			array(
				'authenticated' => false,
				'timeout'       => 2,
			)
		);

		if ( is_wp_error( $request ) ) {
			set_transient( $cache_key, array(), 15 * MINUTE_IN_SECONDS );

			throw new Exception( $request->get_error_message(), (int) $request->get_error_data() );
		}

		$code = wp_remote_retrieve_response_code( $request );
		if ( 200 !== $code ) {
			set_transient( $cache_key, array(), 15 * MINUTE_IN_SECONDS );

			throw new Exception( self::get_message_for_response_code( $code ), $code );
		}

		$data = json_decode( wp_remote_retrieve_body( $request ), true );
		if ( ! is_array( $data ) ) {
			set_transient( $cache_key, array(), 15 * MINUTE_IN_SECONDS );

			throw new Exception( __( 'WooCommerce.com API returned an invalid response.', 'woocommerce' ), 422 );
		}

		set_transient( $cache_key, $data, DAY_IN_SECONDS );

		// Remove notice after successful API call as it's no longer applicable.
		self::remove_api_error_notice();
		return $data;
	} catch ( Exception $e ) {
		if ( $e->getCode() < 404 ) {
			self::remove_api_error_notice();
		} else {
			// Only show error notice in case there is no proper communication with WCCOM.
			self::log( 'Error getting product usage notice rules: ' . $e->getMessage(), 'error' );
			self::add_api_error_notice();
		}
	}

	return array();
}