2016-11-01 3 views
7

So habe ich einen e-Commerce mit woocommerce und ich benutze benutzerdefinierte Versand für Tracking-Gebühr. Und ich füge bereits neue Eingabedaten hinzu (auswählen). wie können Sie unten angezeigten Bild ein: enter image description hereWordpress Woocommerce erhalten Wert von benutzerdefinierten Versandfeld (AJAX)

// 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 Standarddaten hatte ADDRESS_1, ADDRESS_2, Land, Bundesland, Stadt, aber ich brauche eine weitere Daten genannt subdistrict. Ich muss diese Daten (Unterbezirk) nicht speichern. Aber ich muss diesen Wert als Parameter für die Versandkosten verwenden.

Ich bereits neue Klasse-custom-shipping-delivery.php erstellen. und ich stelle bereits sicher, dass die Funktion perfekt funktioniert, weil ich bereits versuche, $ subdistrict-Daten manuell zu setzen.

//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 
)); 

Zusammenfassung:

Wie wählen Sie Wert von Subdistrict Eingangstyp erhalten (auf Checkout-Seite)?

Entschuldigung, ich bearbeite gerade von einer anderen Person Arbeit, also verstehe ich diesen Code überhaupt nicht. Aber ich denke, sie haben vergessen, diesen Wert zu bekommen, weil sie es nur hart codieren und ich ein Neuling auf WordPress bin, also weiß ich nicht, wie man Daten auf dem Auscheckenformular weitergibt.

+0

Postleitzahl statt Screenshots – Blueblazer172

Antwort

2

Nachdem die Antwort für eine Weile suchen, dann erhalte ich die Antwort.

So für die Zusammenfassung es: Über die Antwort Sitzung verwenden, um die Daten aus dem Versand benutzerdefinierte Feld (Ajax) zu erhalten. Also wenn AJAX läuft. Ich sende den Wert des 'Subdistrict'-Felds an die Funktion und speichere es in der Sitzung.

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

dann für die Sitzungsdaten aus anderen Funktion erhalte ich diesen Code ausführen:

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

für weitere Informationen erhalte ich die Antwort von dieser:

http://phpwpinfo.com/how-to-update-shipping-cost-in-cart-dynamically-based-on-a-custom-field-in-woocommerce/

0

Hier ist ein Plugin namens Checkout Field Editor für Woocommerce.

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

Sieht aus wie das Plugin $ 49 für eine Single-Site-Lizenz kostet.

Die andere Möglichkeit ist, es selbst zu programmieren. Hier ist ein Tutorial.

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

+0

Ich habe bereits ein benutzerdefiniertes Feld hinzugefügt. aber ich weiß nicht, wie ich diesen Wert von Ajax bekommen kann. – GandhyOnly

Verwandte Themen