Wordpress Woocommerce从定制运输领域(AJAX)获得价值

时间:2016-11-01 03:26:57

标签: php wordpress woocommerce

所以我有一个使用woocommerce的电子商务,我使用自定义运费来跟踪运费。 我已经添加了新的输入数据(选择)。就像你在下面的图片中看到的那样: enter image description here

// Hook in
add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields');

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields($fields) {

    $fields['billing']['billing_city'] = array(
        'type' => 'select',
        'label' => __('Kota / Kabupaten', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kota / Kabupaten'
        )
    );
    $fields['shipping']['shipping_city'] = array(
        'type' => 'select',
        'label' => __('Kota / Kabupaten', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kota / Kabupaten'
        )
    );


    $fields['billing']['billing_subdistrict'] = array(
        'type' => 'select',
        'label' => __('Kecamatan', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kecamatan'
        )
    );

    $fields['shipping']['shipping_subdistrict'] = array(
        'type' => 'select',
        'label' => __('Kecamatan', 'woocommerce'),
        'required' => true,
        'class' => array('form-row-wide', 'address-field'),
        'clear' => true,
        'options' => array(
            '' => 'Pilih Kecamatan'
        )
    );


    return $fields;
}

Woocommerce默认数据有address_1,address_2,country,state,city但我还需要一个名为subdistrict的数据。我不需要保存该数据(subdistrict)。但我需要使用该值作为跟踪运费的参数。

我已经创建了新的class-custom-shipping-delivery.php。 我已经确保该功能完美运行,因为我已经尝试手动设置$ subdistrict数据。

//custom-shipping.php
$province = $package['destination']['state'];
$city = $package['destination']['city'];

$subdistrict= 'something';
//How to get the data from custom field (ajax) 
//because I need to see the shipping fee result before Checkout (and update it to add rate)


$destination_code = $this->getDestinationCode($province,$city,$subdistrict);

$ongkir = $this->cek_ongkir($origin,$destination_code,$weight);

//print_r();

// send the final rate to the user. 
$this->add_rate(array(
    'id' => $this->id,
    'label' => $this->title,
    'cost' => $ongkir
));

要点:

如何从子区域获取值输入类型选择(在结帐页面上)?

抱歉,我只是编辑其他人的工作,所以我根本不理解该代码。但我认为他们忘记了这个价值,因为他们只是对它进行硬编码而且我是wordpress的新手,所以我不知道如何在结账表单上传递数据。

2 个答案:

答案 0 :(得分:2)

在找到答案一段时间后,我得到了答案。

所以对于摘要它: 以上答案使用会话从发货自定义字段(ajax)获取数据。 所以当AJAX运行时。我将'subdistrict'字段的值发送到函数并将其保存到session。

function ajax_process($subdistrict){
   //some code
   session_start();
   $_SESSION['subdistrict'] = $subdistrict;
}

然后从其他函数获取会话数据我运行此代码:

@session_start();
$subdistrict = $_SESSION['subdistrict'];

答案 1 :(得分:0)

这是一个名为Checkout Field Editor for Woocommerce的插件。

https://docs.woocommerce.com/document/checkout-field-editor/

对于单个站点许可证,该插件的价格为49美元。

另一种选择是自己编码。这是一个教程。

https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/