PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-根据WooCommerce统一费率送货方式的自定义字段计算添加送货时间大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用在产品编辑页面显示自定义字段代码.此文本框在单个产品页面显示烹饪时间.

这是代码

// BACkend: Display additional product fields
add_action( 'woocommerce_product_options_general_product_data', 'add_time_field_general_product_data' );

function add_time_field_general_product_data() {
// Custom Time Field
woocommerce_wp_text_input( array(
    'id' => '_custom_time',
    'label' => __( 'Time for cooking', 'woocommerce' ),
));    
}

// BACkend: Save the data value from the custom fields
add_action( 'woocommerce_admin_process_product_object', 'save_time_custom_fields_values' );

function save_time_custom_fields_values( $product ) {
// Save Custom Time Field
if( isset( $_POST['_custom_time'] ) ) {
    $product->update_Meta_data( '_custom_time', sanitize_text_field( $_POST['_custom_time'] ) );
}
}

// Display custom fields values under item name in checkout
add_filter( 'woocommerce_checkout_cart_item_quantity', 'custom_time_field_checkout_item_name', 10, 3 );

function custom_time_field_checkout_item_name( $item_qty, $cart_item, $cart_item_key ) {
if( $value4 = $cart_item['data']->get_Meta('_custom_time') ) {
    $item_qty .= '<br /><div class="my-custom-style"><strong>' . __("Time for cooking", "woocommerce") . ':</strong> ' . $value4 . ' min.</div>';
}

return $item_qty;
}

// Display custom fields values on orders and email notifications
add_filter( 'woocommerce_order_item_name', 'custom_time_field_order_item_name', 10, 2 );
function custom_time_field_order_item_name( $item_name, $item ) {
$product = $item->get_product();

if( $value4 = $product->get_Meta('_custom_time') ) {
    $item_name .= '<br /><span class="my-custom-style"><strong>' . __("Time for cooking", "woocommerce") . ':</strong> ' . $value4 . ' min.</span>';
}

return $item_name;
}

如何根据此代码获得以下功能

例如,客户向购物车和结帐订单添加了几道菜.他看到有多少时间在煮这道菜.

但是,当客户选择按快递方式(统一费率)交货时,在同一块中显示交货时间.

固定费率= $10

交货时间=(从订单中选择最长的烹饪时间)分钟. 45分钟

据我了解,下订单时需要获取自定义字段“ _custom_time”的数据.然后,以某种方式需要获得该字段的最大值并增加45分钟.

我寻求您的帮助!我希望这个问题的答案对许多开发人员有用.

解决方法:

尝试以下代码,当在结帐页面上选择“统一费率”运输方式时,该代码显示交付时间(根据最高商品烹饪时间值45分钟计算):

add_action( 'woocommerce_after_shipping_rate', 'action_after_shipping_rate_callBACk', 10, 2 );
function action_after_shipping_rate_callBACk( $method, $index ) {
    $chosen_shipping_id = WC()->session->get( 'chosen_shipping_methods' )[$index];

    if( is_checkout() && $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 '<br><small style="margin-left:2em;border:solid 1px #ccc;padding:2px 5px;"><strong>' . __("Delivery time", "woocommerce") . '</strong>: ' . $delivery_time . ' min.</small>';
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.PHP文件中.经过测试和工作.

php-根据WooCommerce统一费率送货方式的自定义字段计算添加送货时间

php-根据WooCommerce统一费率送货方式的自定义字段计算添加送货时间

大佬总结

以上是大佬教程为你收集整理的php-根据WooCommerce统一费率送货方式的自定义字段计算添加送货时间全部内容,希望文章能够帮你解决php-根据WooCommerce统一费率送货方式的自定义字段计算添加送货时间所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: