Automattic\WooCommerce\Internal\Admin\Onboarding
OnboardingProducts::get_product_data()
Get dynamic product data from API.
Method of the class: OnboardingProducts{}
No Hooks.
Return
Array
.
Usage
$result = OnboardingProducts::get_product_data( $product_types );
- $product_types(array) (required)
- Array of product types.
OnboardingProducts::get_product_data() OnboardingProducts::get product data code WC 9.7.1
public static function get_product_data( $product_types ) { $locale = get_user_locale(); // Transient value is an array of product data keyed by locale. $transient_value = get_transient( self::PRODUCT_DATA_TRANSIENT ); $transient_value = is_array( $transient_value ) ? $transient_value : array(); $woocommerce_products = $transient_value[ $locale ] ?? false; if ( false === $woocommerce_products ) { $woocommerce_products = wp_remote_get( add_query_arg( array( 'locale' => $locale, ), 'https://woocommerce.com/wp-json/wccom-extensions/1.0/search' ), array( 'user-agent' => 'WooCommerce/' . WC()->version . '; ' . get_bloginfo( 'url' ), ) ); if ( is_wp_error( $woocommerce_products ) ) { return $product_types; } $transient_value[ $locale ] = $woocommerce_products; set_transient( self::PRODUCT_DATA_TRANSIENT, $transient_value, DAY_IN_SECONDS ); } $data = json_decode( $woocommerce_products['body'] ); $products = array(); $product_data = array(); // Map product data by ID. if ( isset( $data ) && isset( $data->products ) ) { foreach ( $data->products as $product_datum ) { if ( isset( $product_datum->id ) ) { $products[ $product_datum->id ] = $product_datum; } } } // Loop over product types and append data. foreach ( $product_types as $key => $product_type ) { $product_data[ $key ] = $product_types[ $key ]; if ( isset( $product_type['product'] ) && isset( $products[ $product_type['product'] ] ) ) { $price = html_entity_decode( $products[ $product_type['product'] ]->price ); $yearly_price = (float) str_replace( '$', '', $price ); $product_data[ $key ]['yearly_price'] = $yearly_price; $product_data[ $key ]['description'] = $products[ $product_type['product'] ]->excerpt; $product_data[ $key ]['more_url'] = $products[ $product_type['product'] ]->link; $product_data[ $key ]['slug'] = strtolower( preg_replace( '~[^\pL\d]+~u', '-', $products[ $product_type['product'] ]->slug ) ); } } return $product_data; }