WC_Post_Data::before_delete_order()public staticWC 3.2.0

Before deleting an order, do some cleanup.

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

Хуков нет.

Возвращает

null. Ничего (null).

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

$result = WC_Post_Data::before_delete_order( $order_id );
$order_id(int) (обязательный)
Order ID.

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

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

Код WC_Post_Data::before_delete_order() WC 8.7.0

public static function before_delete_order( $order_id ) {
	if ( OrderUtil::is_order( $order_id, wc_get_order_types() ) ) {
		// Clean up user.
		$order = wc_get_order( $order_id );

		// Check for `get_customer_id`, since this may be e.g. a refund order (which doesn't implement it).
		$customer_id = is_callable( array( $order, 'get_customer_id' ) ) ? $order->get_customer_id() : 0;

		if ( $customer_id > 0 && 'shop_order' === $order->get_type() ) {
			$customer    = new WC_Customer( $customer_id );
			$order_count = $customer->get_order_count();
			$order_count --;

			if ( 0 === $order_count ) {
				$customer->set_is_paying_customer( false );
				$customer->save();
			}

			// Delete order count and last order meta.
			delete_user_meta( $customer_id, '_order_count' );
			delete_user_meta( $customer_id, '_last_order' );
		}

		// Clean up items.
		self::delete_order_items( $order_id );
		self::delete_order_downloadable_permissions( $order_id );
	}
}