Ich baue eine benutzerdefinierte Versandmethode für Woocommerce auf, und das einzige, was mich total beschäftigt, ist, wie benutzerdefinierte Werte an die Funktion compute_shipping() übergeben werden, entweder wenn sie auf der Warenkorbseite oder der Checkout-Seite verwendet wird.
Ich muss eine Handvoll benutzerdefinierter Variablen übergeben, die sich auf das Angebot auswirken, z. B. “Ist Wohnadresse”, “Ist Messe” usw. usw.
compute_shipping empfängt das $package-Array, das ein ‘destination’-Array enthält, aber dieses enthält nur die Standardinformationen add1, add2, Stadt, Staat, Postleitzahl, Land. Ich habe der Checkout-Seite sowohl unter Rechnungsstellung als auch unter Versand benutzerdefinierte Felder hinzugefügt, aber ich kann immer noch nicht herausfinden, wie ich diese Werte für die Funktion compute_shipping zugänglich machen kann.
Ich habe ein benutzerdefiniertes Feld wie folgt hinzugefügt:
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['shipping']['is_residential'] = array(
'label' => __('Residential Address?', 'woocommerce'),
'type' => 'checkbox',
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
Und ich sehe, dass dieses Feld im Abschnitt „Versand“ des Bestellformulars angezeigt wird. Ich sehe jedoch nicht, wie ich irgendwo darauf zugreifen kann. Sogar eine print_r($_POST)
auf der Checkout-Seite wird dieses Feld nicht als Teil der Beitragsdaten angezeigt, selbst nachdem ich weiß, dass das Formular aktualisiert und erneut gepostet wurde.
Aber am wichtigsten ist, dass ich den Inhalt des übermittelten Felds in das $package-Objekt einfügen muss, das Woocommerce an die compute_shipping()-Funktion einer Versandmethode übergibt.
Ich bin mir nur wirklich nicht sicher, wo ich überhaupt damit anfangen soll.
Es ist im Allgemeinen hilfreich, wenn Sie einen Ausschnitt des Codes, den Sie bisher geschrieben haben, zitieren, der das Problem zeigt, das Sie haben, und dann darauf hinweisen, wo das Problem in diesem Code liegt, anstatt nur beschreiben der Code, den Sie geschrieben haben.
– Neminem
14. Februar 2014 um 22:50 Uhr
Ich habe oben etwas Code hinzugefügt, bin mir aber nicht sicher, wie nützlich er sein wird. Die große Sache ist nur, dass ich benutzerdefinierte Checkout-Felder brauche, um irgendwie zugänglich zu sein, und bisher kann ich nicht einmal die Werte in $_POST finden
– HeruRaHa
14. Februar 2014 um 23:35 Uhr