根据Woocommerce中购物车项目的数量添加自定义结帐字段

时间:2018-07-10 07:08:51

标签: php wordpress woocommerce checkout hook-woocommerce

最终,当客户的结帐量超过一定数量时,我试图在woocommerce中为结帐添加一个字段。在此示例中,我使用500,只是试图让一条消息显示在结帐底部。

我一直在尝试各种代码变体,这就是我到目前为止所要做的。

add_action( 'woocommerce_after_checkout_form', 'woocommerce_add_quantity_message', 12 );

function woocommerce_add_quantity_message() {
global $woocommerce;
$total_products = 0;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) 
{
$total_products += $values['quantity'];
}

if($total_products >=500 )
{
echo '<div class="card_discount_message"><p>MORE THAN 500 WOAHHHH</p></div>';
}

任何指针将不胜感激。我也尝试过修改此处找到的代码,但没有运气woocommerce add fee to cart based on quantity

1 个答案:

答案 0 :(得分:3)

已更新

  

您不能在结帐表单之外设置自定义结帐字段。

因此,此自定义字段只能位于结帐表格内的末尾,即在订购说明之后。

尝试以下代码,一旦达到特定的购物车商品数量,这些代码将显示自定义结帐字段(在订购记录后)

add_action( 'woocommerce_after_order_notes', 'add_field_based_quantity', 20, 1 );
function add_field_based_quantity( $checkout ) {
    if( WC()->cart->get_cart_contents_count() >= 500 ) {
        echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';

        woocommerce_form_field( 'my_field_name', array(
            'type'          => 'text',
            'class'         => array('my-field-class form-row-wide'),
            'label'         => __('Fill in this field'),
            'placeholder'   => __('Enter something'),
        ), $checkout->get_value( 'my_field_name' ));

        echo '</div>';
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

enter image description here

代码基于Woocommerce官方文档:Adding a custom special checkout field

因此,您将在该文档中看到如何在订单中保存此自定义字段以及如何也可以显示它……


如果需要,可以在末尾添加自定义通知,并使用以下代码:

add_action( 'woocommerce_after_checkout_form', 'woocommerce_add_quantity_message', 20 );
function woocommerce_add_quantity_message() {
    if( WC()->cart->get_cart_contents_count() >= 500 ) {
        wc_print_notice( __("MORE THAN 500 WOAHHHH !", "woocommerce"), 'notice');
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。