Automattic\WooCommerce\Internal\OrderReviews

ItemEligibility::prefill_for_itempublic staticWC 10.8.0

Pre-fill payload for a line item: rating, text, and comment id.

Returns zero/empty values when no review exists for this order's row, so callers can use it unconditionally.

Method of the class: ItemEligibility{}

No Hooks.

Returns

Array{rating:Int,. text:string, comment_id:int}

Usage

$result = ItemEligibility::prefill_for_item( $item, $order ): array;
$item(WC_Order_Item_Product) (required)
Order line item.
$order(WC_Order) (required)
Order being reviewed.

Changelog

Since 10.8.0 Introduced.

ItemEligibility::prefill_for_item() code WC 10.9.4

public static function prefill_for_item( WC_Order_Item_Product $item, WC_Order $order ): array {
	$existing = self::find_existing_review(
		(int) $item->get_product_id(),
		(int) $item->get_variation_id(),
		$order
	);
	if ( ! $existing instanceof WP_Comment ) {
		return array(
			'rating'     => 0,
			'text'       => '',
			'comment_id' => 0,
		);
	}

	$rating = (int) get_comment_meta( (int) $existing->comment_ID, 'rating', true );
	if ( $rating < 0 || $rating > 5 ) {
		$rating = 0;
	}

	return array(
		'rating'     => $rating,
		'text'       => (string) $existing->comment_content,
		'comment_id' => (int) $existing->comment_ID,
	);
}