在 woocommerce 中,我成功地将自定义字段添加到 Woocommerce 简单产品,并在产品页面的附加信息选项卡上显示该值。
现在我完全迷失了我的最后一块拼图试图在购物车和结帐页面中插入总行以计算总计算量。
自定义字段用于存储以 m3 为单位的家具项目的体积。当客户将商品添加到购物篮时,我想通过将所有自定义字段的值相加并在页面上向客户显示总数来计算货件的总立方米。任何人都可以指出我如何添加这些自定义字段并显示它们的正确方向。
到目前为止我的代码看起来像这样
// Display Fields using WooCommerce Action Hook
add_action( 'woocommerce_product_options_general_product_data', 'woocom_general_product_data_custom_field' );
function woocom_general_product_data_custom_field() {
// Create a custom text field
// Number Field
woocommerce_wp_text_input(
array(
'id' => '_item_volume',
'label' => __( 'Item Shipping Volume', 'woocommerce' ),
'placeholder' => '',
'description' => __( 'Enter the volume her in m3.', 'woocommerce' ),
'type' => 'number',
'custom_attributes' => array(
'step' => 'any',
'min' => '0.001'
)
)
);
}
// Hook to save …Run Code Online (Sandbox Code Playgroud) 我在一个函数中有一些代码,当自定义字段的总增加值超过某个值时,它会向最终用户显示一条消息。基本上是一条消息,告诉客户他们订购的家具太多,无法装入 68 立方米的集装箱。
我也有代码假设禁用产品上的添加到购物车按钮 - 这似乎不起作用。
那么当我的自定义字段总值超过 68 时,下面的代码中是否有一个明显的问题来禁用添加到购物车按钮,并且有没有办法完全禁用提交订单,因此在自定义值之前无法提交订单字段总数低于 68?
显示消息的代码如下并且工作正常。
// display message when cart volume exceeds 68mcube
add_action('woocommerce_before_calculate_totals', 'display_custom_notice',
50, 1);
function display_custom_notice( $cart ) {
if ( is_admin() && !defined('DOING_AJAX') )
return;
$total_volume = 0;
// Loop through cart items and calculate total volume
foreach( WC()->cart->get_cart() as $cart_item ){
$product_volume = (float) get_post_meta( $cart_item['product_id'],
'_item_volume', true );
$total_volume += $product_volume * $cart_item['quantity'];
}
if( $total_volume > 68 && $total_volume != 0 ){
// Display a custom notice …Run Code Online (Sandbox Code Playgroud) 我为订购家具集装箱的批发客户使用 woocommerce - 通常为 40 英尺集装箱,容积为 68 立方米。
有没有办法可以在网站上的某个地方显示 - 也许在标题区域有一个框,显示他们篮子中产品的总立方米?当他们达到 68 立方米时,我需要向客户展示,以便他们知道他们已经装满了一个容器。
如果客户尝试提交小于 68m3 的订单,是否有办法闪现一条消息,向他们表明他们的容器中还有剩余空间?
任何帮助表示赞赏。