在WooCommerce中选择送货方式时显示自定义代码

我有两个自定义代码,在选择投放方式时应该显示。

选择“固定费率”时,此代码显示:

<?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>';
        }
    }
}
tf2818715 回答:在WooCommerce中选择送货方式时显示自定义代码

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2712860.html

大家都在问