wc_get_related_products()
Get related products based on product category and tags.
Хуки из функции
Возвращает
Массив
.
Использование
wc_get_related_products( $product_id, $limit, $exclude_ids, $related_by );
- $product_id(int) (обязательный)
- Product ID.
- $limit(int)
- Limit of results.
По умолчанию: 5 - $exclude_ids(массив)
- Exclude IDs from the results.
По умолчанию: array() - $related_by(массив)
- Related by category and tags boolean flags.
По умолчанию: array()
Список изменений
С версии 3.0.0 | Введена. |
Код wc_get_related_products() wc get related products WC 9.8.1
function wc_get_related_products( $product_id, $limit = 5, $exclude_ids = array(), $related_by = array() ) { $product_id = absint( $product_id ); $limit = $limit >= -1 ? $limit : 5; $exclude_ids = array_merge( array( 0, $product_id ), $exclude_ids ); $transient_name = 'wc_related_' . $product_id; $query_args = http_build_query( array( 'limit' => $limit, 'exclude_ids' => $exclude_ids, 'related_by' => $related_by, ) ); $transient = get_transient( $transient_name ); $related_posts = $transient && is_array( $transient ) && isset( $transient[ $query_args ] ) ? $transient[ $query_args ] : false; // Query related posts if they are not cached // Should happen only once per day due to transient expiration set to 1 DAY_IN_SECONDS, to avoid performance issues. if ( false === $related_posts ) { $cats_array = apply_filters( 'woocommerce_product_related_posts_relate_by_category', true, $product_id ) ? apply_filters( 'woocommerce_get_related_product_cat_terms', wc_get_product_term_ids( $product_id, 'product_cat' ), $product_id ) : array(); $tags_array = apply_filters( 'woocommerce_product_related_posts_relate_by_tag', true, $product_id ) ? apply_filters( 'woocommerce_get_related_product_tag_terms', wc_get_product_term_ids( $product_id, 'product_tag' ), $product_id ) : array(); // Don't bother if none are set, unless woocommerce_product_related_posts_force_display is set to true in which case all products are related. if ( empty( $cats_array ) && empty( $tags_array ) && ! apply_filters( 'woocommerce_product_related_posts_force_display', false, $product_id ) ) { $related_posts = array(); } else { $data_store = WC_Data_Store::load( 'product' ); $related_posts = $data_store->get_related_products( $cats_array, $tags_array, $exclude_ids, $limit + 10, $product_id ); } if ( $transient && is_array( $transient ) ) { $transient[ $query_args ] = $related_posts; } else { $transient = array( $query_args => $related_posts ); } set_transient( $transient_name, $transient, DAY_IN_SECONDS ); } $related_posts = apply_filters( 'woocommerce_related_products', $related_posts, $product_id, array( 'limit' => $limit, 'excluded_ids' => $exclude_ids, ) ); if ( apply_filters( 'woocommerce_product_related_posts_shuffle', true ) ) { shuffle( $related_posts ); } return array_slice( $related_posts, 0, $limit ); }