是否可以在WooCommerce的结账页面上通过自定义域更新总价

时间:2020-10-21 作者:Anders Kitson

我想知道我是怎么做的。假设我在woocommerce的结账页面中有一些项目。我想将礼品卡应用于订单,我不能使用礼品卡插件,因为它已经由第三方礼品卡服务实现。有人正在建立连接,让我点击连接到第三方礼品卡服务。

现在我想做的是在结帐页面上,有一个自定义字段,我可以在其中输入礼品卡。通过一个提交按钮,我假设ajax运行一个php函数,提交给第三方礼品卡服务,金额为总价,并返回给我它可以支付的金额。

基本上,我想知道在运行此功能以更新结帐(购物车)中的价格后,我会在Woocomece中挂接什么,我想我会挂接到哪里以添加此自定义字段(或我想是自定义表单)

到目前为止,我已经做到了这一点,我想知道的是,如何在签出之前更新提交函数的总价?

add_action( \'woocommerce_after_checkout_billing_form\', \'gift_card_redeem\' );

// select
function gift_card_redeem( $checkout ){
 
    // you can also add some custom HTML here
 
    woocommerce_form_field( \'contactmethod\', array(
        \'type\'          => \'text\', // text, textarea, select, radio, checkbox, password, about custom validation a little later
        \'required\'  => false, // actually this parameter just adds "*" to the field
        \'class\'         => array(\'gift-card-redeem\'), // array only, read more about classes and styling in the previous step
        \'label\'         => \'gift-card-redeem\',
        \'label_class\'   => \'gift-card-redeem\', // sometimes you need to customize labels, both string and arrays are supported
        ), $checkout->get_value( \'contactmethod\' ) );
 
    // you can also add some custom HTML here
 
}

1 个回复
最合适的回答,由SO网友:HK89 整理而成

好的,你可以使用WooCommerce钩子(WooCommerce\\u before\\u calculate\\u totals),我将举一个例子,以便更容易理解你的想法。据你所知,我想你的问题会解决的

    function calculate_embossing_fee( $cart_object ) {
    if( !WC()->session->__isset( "reload_checkout" )) {
        /* Gift wrap price */
        $additionalPrice = 5;
        foreach ( $cart_object->cart_contents as $key => $value ) {
            if( isset( $value["embossing_fee"] ) ) {
                // Turn $value[\'data\']->price in to $value[\'data\']->get_price()
                $orgPrice = floatval( $value[\'data\']->get_price() );
                $discPrice = $orgPrice + $additionalPrice;
                $value[\'data\']->set_price($discPrice);
            }
        }
    }
}
add_action( \'woocommerce_before_calculate_totals\', \'calculate_embossing_fee\', 99 );
我建议您不能使用此woocommerce表单字段,因为您不能在结账时更新价格,这比您可以在产品页面中添加自定义字段要好

/*礼品包装价格*/$additionalPrice=自定义字段值;

我将参考产品自定义字段link

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: