WC_Privacy_Erasers::order_data_eraser()public staticWC 3.4.0

Finds and erases data which could be used to identify a person from WooCommerce data associated with an email address.

Orders are erased in blocks of 10 to avoid timeouts.

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

Возвращает

Массив. An array of personal data in name value pairs

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

$result = WC_Privacy_Erasers::order_data_eraser( $email_address, $page );
$email_address(строка) (обязательный)
The user email address.
$page(int) (обязательный)
Page.

Список изменений

С версии 3.4.0 Введена.

Код WC_Privacy_Erasers::order_data_eraser() WC 8.7.0

public static function order_data_eraser( $email_address, $page ) {
	$page            = (int) $page;
	$user            = get_user_by( 'email', $email_address ); // Check if user has an ID in the DB to load stored personal data.
	$erasure_enabled = wc_string_to_bool( get_option( 'woocommerce_erasure_request_removes_order_data', 'no' ) );
	$response        = array(
		'items_removed'  => false,
		'items_retained' => false,
		'messages'       => array(),
		'done'           => true,
	);

	$order_query = array(
		'limit'    => 10,
		'page'     => $page,
		'customer' => array( $email_address ),
	);

	if ( $user instanceof WP_User ) {
		$order_query['customer'][] = (int) $user->ID;
	}

	$orders = wc_get_orders( $order_query );

	if ( 0 < count( $orders ) ) {
		foreach ( $orders as $order ) {
			if ( apply_filters( 'woocommerce_privacy_erase_order_personal_data', $erasure_enabled, $order ) ) {
				self::remove_order_personal_data( $order );

				/* Translators: %s Order number. */
				$response['messages'][]    = sprintf( __( 'Removed personal data from order %s.', 'woocommerce' ), $order->get_order_number() );
				$response['items_removed'] = true;
			} else {
				/* Translators: %s Order number. */
				$response['messages'][]     = sprintf( __( 'Personal data within order %s has been retained.', 'woocommerce' ), $order->get_order_number() );
				$response['items_retained'] = true;
			}
		}
		$response['done'] = 10 > count( $orders );
	} else {
		$response['done'] = true;
	}

	return $response;
}