WooCommerce kann die Versandart der Tabellenrate nicht priorisieren, also versuche ich es selbst zu tun, scheitere aber schrecklich.WooCommerce: Programmatisches Ändern der Standardversandmethode
Ich habe versucht, eine Aktion an dem Punkt hinzuzufügen, ich denke, es ist eingestellt, aber es funktioniert nicht. Hier ist, was ich habe versucht (Ich möchte nur die erste Versandart in dem verfügbaren Versandmethoden Array verwenden):
function reset_default_shipping_method() {
$available_methods = WC()->shipping->packages[0]['rates'];
$chosen_method = key($available_methods);
WC()->session->set('chosen_shipping_methods', $chosen_method);
}
add_action('woocommerce_shipping_method_chosen', 'reset_default_shipping_method');
Ich habe getestet $available_methods
und $chosen_method
und beide präsentieren wie erwartet (wenn in Seite laufen), aber , sobald ich es der Aktion woocommerce_shipping_method_chosen
hinzufügen, scheint es nicht zu aktualisieren.
z.B. Wenn ich dies durch einen anderen Haken laufen:
function output_to_footer() {
if (current_user_can('administrator')) :
$current_method = WC()->session->get('chosen_shipping_methods');
$available_methods = WC()->shipping->packages[0]['rates'];
$chosen_method = key($available_methods);
WC()->session->set('chosen_shipping_methods', $chosen_method);
print "\n".'-----'."\n";
print_r($current_method);
print "\n".'-----'."\n";
print_r($available_methods);
print "\n".'-----'."\n";
print_r($chosen_method);
print "\n".'-----'."\n";
endif;
}
add_action('print_footer_messages', 'output_to_footer');
Es ist wie alles aussieht tut, was es sollte, aber wenn ich es von der Aktion ausführen: woocommerce_shipping_method_chosen
es alles zu tun, „erscheint“, aber der Versand Radio noch gesetzt zur alten Versandart?
----- Array ( [0] => table_rate-5 : 70 ) ----- Array ( [table_rate-7 : 72] => WC_Shipping_Rate Object ( [id] => table_rate-7 : 72 [label] => Registered Australian Post (2 to 8 Business Days) [cost] => 4.0909 [taxes] => Array ( [1] => 0.40909 ) [method_id] => table_rate ) [table_rate-8 : 90] => WC_Shipping_Rate Object ( [id] => table_rate-8 : 90 [label] => Tracking and Freight Insurance [cost] => 20.055881818182 [taxes] => Array ( [1] => 2.0055881818182 ) [method_id] => table_rate ) [table_rate-5 : 70] => WC_Shipping_Rate Object ( [id] => table_rate-5 : 70 [label] => Nation-Wide Delivery (5 to 12 Business Days) [cost] => 0 [taxes] => Array ( ) [method_id] => table_rate ) [local_pickup] => WC_Shipping_Rate Object ( [id] => local_pickup [label] => Local Pickup [cost] => 0 [taxes] => Array ( ) [method_id] => local_pickup ) ) ----- table_rate-7 : 72 -----
Ich habe den ganzen Tag daran gearbeitet und fühle mich einer Lösung nicht näher. Hoffentlich kann hier jemand helfen.
Sie möchten, dass "Tabellenrate" immer die Standardversandmethode ist? Welche Version von WooCommerce verwenden Sie? Auch ein Hinweis, dass "woocommerce_shipping_chosen_method" ein Filter-Hook und kein Action-Hook ist. Verwenden Sie daher 'add_filter' anstelle von' add_action' und geben Sie Ihre Standardversandmethode –
zurück. Tabellenrate ist die Standardversandmethode bereits - Ich möchte, dass Tabellenrate Option 1 die Standardeinstellung ist, nicht Tabellenrate Option 3. –
PS. Ich bin zu sehr ein Neuling, um den Unterschied zwischen add_filter und add_action zu verstehen. Während ich höre, was du sagst, verstehe ich das nicht wirklich. –