wc_get_order_notes()WC 3.2.0

Get order notes.

No Hooks.

Return

stdClass[]. Array of stdClass objects with order notes details.

Usage

wc_get_order_notes( $args );
$args(array) (required)
Query arguments {
php Array of query parameters.
@type string $limit         Maximum number of notes to retrieve.
							Default empty (no limit).
@type int    $order_id      Limit results to those affiliated with a given order ID.
							Default 0.
@type array  $order__in     Array of order IDs to include affiliated notes for.
							Default empty.
@type array  $order__not_in Array of order IDs to exclude affiliated notes for.
							Default empty.
@type string $orderby       Define how should sort notes.
							Accepts 'date_created', 'date_created_gmt' or 'id'.
							Default: 'id'.
@type string $order         How to order retrieved notes.
							Accepts 'ASC' or 'DESC'.
							Default: 'DESC'.
@type string $type          Define what type of note should retrieve.
							Accepts 'customer', 'internal' or empty for both.
							Default empty.

}

Changelog

Since 3.2.0 Introduced.

wc_get_order_notes() code WC 9.3.3

function wc_get_order_notes( $args ) {
	$key_mapping = array(
		'limit'         => 'number',
		'order_id'      => 'post_id',
		'order__in'     => 'post__in',
		'order__not_in' => 'post__not_in',
	);

	foreach ( $key_mapping as $query_key => $db_key ) {
		if ( isset( $args[ $query_key ] ) ) {
			$args[ $db_key ] = $args[ $query_key ];
			unset( $args[ $query_key ] );
		}
	}

	// Define orderby.
	$orderby_mapping = array(
		'date_created'     => 'comment_date',
		'date_created_gmt' => 'comment_date_gmt',
		'id'               => 'comment_ID',
	);

	$args['orderby'] = ! empty( $args['orderby'] ) && in_array( $args['orderby'], array( 'date_created', 'date_created_gmt', 'id' ), true ) ? $orderby_mapping[ $args['orderby'] ] : 'comment_ID';

	// Set WooCommerce order type.
	if ( isset( $args['type'] ) && 'customer' === $args['type'] ) {
		$args['meta_query'] = array( // WPCS: slow query ok.
			array(
				'key'     => 'is_customer_note',
				'value'   => 1,
				'compare' => '=',
			),
		);
	} elseif ( isset( $args['type'] ) && 'internal' === $args['type'] ) {
		$args['meta_query'] = array( // WPCS: slow query ok.
			array(
				'key'     => 'is_customer_note',
				'compare' => 'NOT EXISTS',
			),
		);
	}

	// Set correct comment type.
	$args['type'] = 'order_note';

	// Always approved.
	$args['status'] = 'approve';

	// Does not support 'count' or 'fields'.
	unset( $args['count'], $args['fields'] );

	remove_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ), 10, 1 );

	$notes = get_comments( $args );

	add_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ), 10, 1 );

	return array_filter( array_map( 'wc_get_order_note', $notes ) );
}