$posts_per_page, 'columns' => $columns, ); $args = wp_parse_args( $defaults, $args ); return $args; } add_filter( 'woocommerce_output_related_products_args', 'botiga_woocommerce_related_products_args' ); /** * Related products as slider */ function botiga_woocommerce_output_related_products_slider( $args = array() ) { global $product; if ( ! $product ) { return; } $posts_per_page = get_theme_mod( 'shop_single_related_products_number', 3 ); $columns = get_theme_mod( 'shop_single_related_products_columns_number', 3 ); $shop_single_related_products_slider_nav = get_theme_mod( 'shop_single_related_products_slider_nav', 'always-show' ); $defaults = array( 'posts_per_page' => $posts_per_page, /** * Hook 'botiga_related_products_as_slider_orderby' * * @since 1.0.0 */ 'orderby' => apply_filters( 'botiga_related_products_as_slider_orderby', 'rand' ), /** * Hook 'botiga_related_products_as_slider_order' * * @since 1.0.0 */ 'order' => apply_filters( 'botiga_related_products_as_slider_order', 'desc' ), ); $args = wp_parse_args( $args, $defaults ); // Get visible related products then sort them at random. $args['related_products'] = array_filter( array_map( 'wc_get_product', wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() ) ), 'wc_products_array_filter_visible' ); // Handle orderby. $related_products = wc_products_array_orderby( $args['related_products'], $args['orderby'], $args['order'] ); if( count( $related_products ) === 0 ) { return; } ?>