Automattic\WooCommerce\Internal\ProductFeed\Integrations\POSCatalog

ApiController::generate_feedpublicWC 1.0

Starts generating a feed.

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

Хуков нет.

Возвращает

WP_REST_Response. The response object.

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

$ApiController = new ApiController();
$ApiController->generate_feed( $request ): WP_REST_Response;
$request(WP_REST_Request) (обязательный)
.

Код ApiController::generate_feed() WC 10.5.2

public function generate_feed( WP_REST_Request $request ): WP_REST_Response { // phpcs:ignore Squiz.Commenting.FunctionComment.IncorrectTypeHint
	$generator = $this->container->get( AsyncGenerator::class );
	try {
		$params = array();
		if ( null !== $request['_product_fields'] ) {
			$params['_product_fields'] = $request['_product_fields'];
		}
		if ( null !== $request['_variation_fields'] ) {
			$params['_variation_fields'] = $request['_variation_fields'];
		}

		$response = $request->get_param( 'force' )
			? $generator->force_regeneration( $params )
			: $generator->get_status( $params );

		// Use the right datetime format.
		if ( isset( $response['scheduled_at'] ) ) {
			$response['scheduled_at'] = wc_rest_prepare_date_response( $response['scheduled_at'] );
		}
		if ( isset( $response['completed_at'] ) ) {
			$response['completed_at'] = wc_rest_prepare_date_response( $response['completed_at'] );
		}

		// Remove sensitive data from the response.
		if ( isset( $response['action_id'] ) ) {
			unset( $response['action_id'] );
		}
		if ( isset( $response['path'] ) ) {
			unset( $response['path'] );
		}
	} catch ( \Exception $e ) {
		wc_get_logger()->error(
			'Feed generation failed',
			array( 'error' => $e->getMessage() )
		);
		return new WP_REST_Response(
			array(
				'success' => false,
				'message' => __( 'An error occurred while generating the feed.', 'woocommerce' ),
			),
			500
		);
	}
	return new WP_REST_Response( $response );
}