4 * * @param number $product_per_page Products per page. * @return int[] Products ids. */ private function get_related_products_ids( $product_per_page = 5 ): array { global $post; $product = wc_get_product( $post->ID ); if ( ! $product instanceof \WC_Product ) { return array(); } $related_products_ids = wc_get_related_products( $product->get_id(), $product_per_page, $product->get_upsell_ids() ); if ( ! empty( $related_products_ids ) ) { // Prime caches to reduce future queries. _prime_post_caches( $related_products_ids ); $related_products = array_filter( array_map( 'wc_get_product', $related_products_ids ), 'wc_products_array_filter_visible' ); $related_products = wc_products_array_orderby( $related_products, 'rand', 'desc' ); /** @var \WC_Product[] $related_products */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // Prime caches to reduce future queries. _prime_post_caches( array_filter( array_map( fn( $product ) => (int) $product->get_image_id(), $related_products ) ) ); $related_products_ids = array_map( fn( $product ) => $product->get_id(), $related_products ); } return $related_products_ids; } }