Passen Sie die Woocommerce-Versandgebietsmethode an
<p>Ich habe mehrere Stunden damit verbracht, die richtige Lösung für die Erstellung einer benutzerdefinierten Versandbereichsmethode zu finden. </p>
<p>WC:7.2.2
Arbeitsstress: 6.0.3</p>
<p>Die Website ist in gutem Zustand, keine Berechtigungsfehler usw. (aktualisiert nur verfügbare Informationen)</p>
<p>Ich habe eine Reihe von Quellen verwendet, wie zum Beispiel:
https://woocommerce.github.io/woocommerce-rest-api-docs/?php#shipping-zone-methods</p>
<p>https://github.com/woocommerce/woocommerce/wiki/Shipping-Method-API#properties</p>
<p>https://gist.github.com/mikejolley/3b37b9cc19a774665f31</p>
<p>https://code.tutsplus.com/tutorials/create-a-custom-shipping-method-for-woocommerce--cms-26098</p>
<p>Es gibt noch viele andere. </p>
<p>Grundsätzlich benötige ich Beispielcode zum Erstellen (Plugin) für eine Versandzonenmethode mit einer benutzerdefinierten Versandkostenfunktion. Wir basieren auf Woocommerce Easy Booking und haben Tage in den Metadaten, deshalb können wir dafür keines der offiziellen Premium-Plugins von Woocommerce verwenden.</p>
<p>我最终得到了以下代码:</p>
<pre class="brush:php;toolbar:false;"><?php
if (!definiert('ABSPATH')) {
Ausfahrt; // Beenden, wenn direkt darauf zugegriffen wird
}
Funktion your_shipping_method_init()
{
if (!class_exists('WC_Your_Shipping_Method')) {
Die Klasse WC_Your_Shipping_Method erweitert WC_Shipping_Method
{
/*** Konstruktor für Ihre Versandklasse
*
* @access public
* @return void*/
öffentliche Funktion __construct()
{
$this->id = 'diet_day_shipping'; // ID für Ihre Versandart. Sollte einzigartig sein.
$this->method_title = __('Versand pro Diättag'); // Titel wird im Admin angezeigt
$this->method_description = __('Versandkosten pro Buchung'); // Beschreibung wird im Admin angezeigt
$this->enabled = "yes"; // Dies kann als Einstellung hinzugefügt werden, in diesem Beispiel wird die Aktivierung jedoch erzwungen
//$this->title = "Einfache Buchung, Versand pro Tag"; // Dies kann als Einstellung hinzugefügt werden, ist aber in diesem Beispiel erzwungen.
//$this->rates = array('calculate_shipping');
$this->supports = array(
'Versandzonen',
'Instanzeinstellungen',
'instance-settings-modal',
);
$this->instance_form_fields =
Array(
'title' => Array(
'title' => __('Methodentitel'),
'Typ' => 'Text',
'Beschreibung' => __('Dies steuert den Titel, den der Benutzer beim Auschecken sieht.'),
'default' => __('Tägliche Lieferung für Ihre Ernährung'),
),
'Kosten' => Array(
'title' => __('Kosten'),
'Typ' => 'Nummer',
'Beschreibung' => __('Dies steuert die Kosten pro Tag.'),
'default' => 7,
)
);
$this->init();
$this->title = $this->get_option('title');
$this->cost = $this->get_option('cost');
add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options'));
}/*** Initialisieren Sie Ihre Einstellungen
*
* @access public
* @return void*/
Funktion init()
{
// Laden Sie die Einstellungs-API
$this->init_form_fields();
// Einstellungen im Admin speichern, falls Sie welche definiert haben
add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options'));
}
Funktion init_form_fields()
{
$this->form_fields = array(
'title' => Array(
'title' => __('Methodentitel'),
'Typ' => 'Text',
'Beschreibung' => __('Dies steuert den Titel, den der Benutzer beim Auschecken sieht.'),
'default' => __('Tägliche Versandkosten für die Diät'),
),
'Kosten' => Array(
'title' => __('Kosten'),
'Typ' => 'Nummer',
'Beschreibung' => __('Dies steuert die Kosten pro Tag.'),
'default' => 7,
)
);
}
/*** Funktion „Berechnen_Versand“.
* @param array $package (Standard: array())*/
öffentliche Funktion berechne_versand($package = array())
{
//Hardcode zum Testen
$shipping_number = 7;
//wahrscheinlich Methode zur Berechnung der endgültigen Versandkosten
/*
foreach ($package['contents'] as $item_id => $values) {
$_product = $values['data'];
$shipping_number = $shipping_number + $_product->wceb_get_product_booking_duration() * $values['quantity'];
}*/
$this->add_rate(array(
'id' => $this->id . $this->instance_id,
'label' => „Dostawa poza Wa-wa“,
'Kosten' => $shipping_number,
));
}
}
}
}
add_action('woocommerce_shipping_init', 'your_shipping_method_init');
Funktion add_your_shipping_method($methods)
{
$methods['diet_day_shipping'] = 'WC_Your_Shipping_Method';
return $methods;
}
add_filter('woocommerce_shipping_methods', 'add_your_shipping_method');</pre>
<p>多人游戏天数的价值.</p>
<p></p>
<p>Kann mir jemand helfen, meinen Code zu reparieren? </p>
<p>Derzeit werden im Admin-Bereich keine Einstellungsoptionen angezeigt. Nicht in der Zeile „Versandbereichsmethode“ und nicht im Bereich „Versandeinstellungen“. </p>
<p>Wenn ich außerdem eine Postleitzahl aus einer Zone mit einer benutzerdefinierten Versandmethode sende, wird im Warenkorb angezeigt, dass für diese Postleitzahl keine Versandmethode verfügbar ist)</p>