我有两个自定义代码,在选择投放方式时应该显示。
选择“固定费率”时,此代码显示:
<?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
<div class="cart-shipping-method">
<?php do_action( 'woocommerce_review_order_before_shipping' ); ?>
<?php wc_cart_totals_shipping_html(); ?>
<?php do_action( 'woocommerce_review_order_after_shipping' ); ?>
<?php
$extra_time = 45; // Additional time to be added
$data_array = []; // Initializing
foreach ( WC()->cart->get_cart() as $cart_item ) {
if( $cooking_time = $cart_item['data']->get_meta('_custom_time') ) {
$data_array[] = (int) $cooking_time;
}
}
if ( sizeof($data_array) ) {
$max_time = (int) max($data_array);
$delivery_time = $max_time + $extra_time;
echo '<p>' . __("Delivery Time","woocommerce") . ': ' . $delivery_time . ' min.</p>';
}
?>
</div>
<?php endif; ?>
选择“本地代答”时,此代码显示:
add_action( 'woocommerce_cart_calculate_fees','custom_discount_for_pickup_shipping_method',10,1 );
function custom_discount_for_pickup_shipping_method( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$percentage = 15; // <=== Discount percentage
$chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
$chosen_shipping_method = explode(':',$chosen_shipping_method_id)[0];
// Only for Local pickup chosen shipping method
if ( strpos( $chosen_shipping_method_id,'local_pickup' ) !== false ) {
// Calculate the discount
$discount = $cart->get_subtotal() * $percentage / 100;
// Add the discount
$cart->add_fee( __('Discount for Local Pickup') . ' (' . $percentage . '%)',-$discount );
}
}
如何选择“固定费率”时仅显示“交货时间”,而选择“本地提货”时仅显示“折扣本地提货”?
p.s。我有另一个版本的“固定费率”代码,但是由于某些原因,它没有出现在我的主题中。我必须重做并将其放入主题文件。
add_action( 'woocommerce_after_shipping_rate','action_after_shipping_rate_callback',2 );
function action_after_shipping_rate_callback( $method,$index ) {
$chosen_shipping_id = WC()->session->get( 'chosen_shipping_methods' )[$index];
if( $method->method_id === 'flat_rate' && $method->id === $chosen_shipping_id ) {
$extra_time = 45; // Additional time to be added
$data_array = []; // Initializing
// Loop through car items
foreach ( WC()->cart->get_cart() as $cart_item ) {
if( $cooking_time = $cart_item['data']->get_meta('_custom_time') ) {
$data_array[] = (int) $cooking_time;
}
}
if ( sizeof($data_array) ) {
$max_time = (int) max($data_array);
$delivery_time = $max_time + $extra_time;
echo '<p><strong>' . __("Delivery Time","woocommerce") . '</strong>: ' . $delivery_time . ' min.</p>';
}
}
}