Automattic\WooCommerce\Blocks\BlockTypes
RelatedProducts::get_related_products_ids
Get related products ids. The logic is copied from the core function woocommerce_related_products. https://github.com/woocommerce/woocommerce/blob/ca49caabcba84ce9f60a03c6d3534ec14b350b80/plugins/woocommerce/includes/wc-template-functions.php/#L2039-L2074
Method of the class: RelatedProducts{}
No Hooks.
Returns
Int[]. Products ids.
Usage
// private - for code of main (parent) class only $result = $this->get_related_products_ids( $product_per_page ): array;
- $product_per_page(number)
- Products per page.
Default:5
RelatedProducts::get_related_products_ids() RelatedProducts::get related products ids code WC 10.9.4
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;
}