recurring_cart_key ), $cart ) ) { return; } $context = $this->contexts->from_cart( $cart, Context::LOCATION_ANY ); /** * Fires before the extras fees are added. * * @since 1.0.0 * * @param \WC_Cart $cart Cart. * @param \Extrova\Core\Context $context Context. */ do_action( 'extrova_before_fees', $cart, $context ); foreach ( $this->service->get_selected( $context ) as list( $extra, $selection ) ) { $price = $this->service->get_price( $extra, $selection, $context ); if ( $price->is_zero() ) { continue; } $args = array( 'id' => self::FEE_PREFIX . $extra->id, 'name' => $this->service->fee_name( $extra, $selection ), 'amount' => $price->amount, 'taxable' => $price->taxable, 'tax_class' => $price->tax_class, ); /** * Filters the fee arguments of an extra. * * @since 1.0.0 * * @param array $args { id, name, amount, taxable, tax_class }. * @param \Extrova\Core\Extra $extra Extra. * @param \Extrova\Core\Selection $selection Selection. * @param \Extrova\Core\Context $context Context. */ $args = apply_filters( 'extrova_fee_args', $args, $extra, $selection, $context ); if ( is_array( $args ) && ! empty( $args['id'] ) ) { $cart->fees_api()->add_fee( $args ); } } /** * Fires after the extras fees are added. * * @since 1.0.0 * * @param \WC_Cart $cart Cart. * @param \Extrova\Core\Context $context Context. */ do_action( 'extrova_after_fees', $cart, $context ); } }