Automattic\WooCommerce\Internal\Products

ProductsOrderingMoveService::compose_range_ids │ private │ WC 1.0

Returns IDs of products whose position falls within the move range.

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

Хуков нет.

Возвращает

int[].

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

// private - только в коде основоного (родительского) класса
$result = $this->compose_range_ids( $map, $reindexed ): array;
$map(объект) (обязательный)
Map with the move route.
$reindexed(array<int,int>) (обязательный)
Reindexed positions map, keyed by product ID.

Код ProductsOrderingMoveService::compose_range_ids() WC 11.2.2

private function compose_range_ids( object $map, array $reindexed ): array {
	global $wpdb;

	// Performance note: when a prior reindex is available, derive range IDs from it — avoids a DB round-trip.
	$expected_count = $map->range_to - $map->range_from + 1;
	$range_ids      = array_keys( array_filter( $reindexed, static fn( $position ) => $position >= $map->range_from && $position <= $map->range_to ) );
	if ( count( $range_ids ) !== $expected_count ) {
		// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
		$range_ids = $wpdb->get_col(
			$wpdb->prepare(
				"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'product' AND menu_order BETWEEN %d AND %d",
				$map->range_from,
				$map->range_to
			)
		);
	}

	return array_map( 'intval', $range_ids );
}