Hallo, ich versuche, eine Funktion in den mu-Plugins zu erstellen, um bestimmte Benutzer daran zu hindern, den Bestellstatus von bestimmten Bestellstatus zu bestimmten Bestellstatus zu ändern.
Ich habe überall gesucht und viele verschiedene Möglichkeiten ausprobiert, aber nichts scheint zu funktionieren.
Eigentlich läuft die Funktion mit woocommerce_order_status_changed
Aktionshaken. Die Sache ist, dass dieser Haken läuft, nachdem der Bestellstatus bereits geändert wurde, was eine Endlosschleife verursacht.
Der nützlichste Haken, den ich gefunden habe, scheint zu sein woocommerce_before_order_object_save
.
ich fand „Fügen Sie ein zusätzliches Argument hinzu, um zu verhindern, dass ‚woocommerce_order_status_changed‘ aufgerufen wird.“ nützlicher verwandter Thread auf WooCommerce Github.
Ich habe versucht, mit @kloon Code-Snippet-Lösung:
add_filter( 'woocommerce_before_order_object_save', 'prevent_order_status_change', 10, 2 );
function prevent_order_status_change( $order, $data_store ) {
$changes = $order->get_changes();
if ( isset( $changes['status'] ) ) {
$data = $order->get_data();
$from_status = $data['status'];
$to_status = $changes['status'];
// Do your logic here and update statuses with CRUD eg $order->set_status( 'completed' );
// Be sure to return the order object
}
return $order;
}
aber $changes
Variable ist immer ein leeres Array.
Ich habe versucht zu verwenden wp_insert_post_data
WordPress-Hookaber wenn ich setze:
$data['post_status'] = "some status";
es verhindert lediglich, dass das gesamte Update (die gesamten neuen Daten) gespeichert wird.
Dies ist der Code, den ich ausführen möchte, ist:
function($data){
if($data['order_status'] == 'comlpeted' && $data['new_order_status'] == 'proccessing'){
// prevent the order status from being changed
$data['new_order_status'] = $data['order_status'];
}
few more if conditions...
return $data;
}
Jede Hilfe oder Beratung ist willkommen.
Frage wie “Bestimmte Benutzer können den Bestellstatus von bestimmten Bestellstatus zu bestimmten Bestellstatus ändern”? Warum “in den mu-Plugins” | (was bedeutet das)?
– LoicTheAztec
4. März 2021 um 10:27 Uhr