Benennen Sie mehrere Bestellstatus in Woocommerce um

Lesezeit: 2 Minuten

Benutzer-Avatar
Bett

Ich versuche, mehrere WooCommerce-Bestellstatus umzubenennen, indem ich die Datei functions.php meines Themes bearbeite. Ich habe hier vor ein paar Jahren einen Code gefunden, der funktioniert, um einen einzelnen Bestellstatus zu ändern, aber da ich sehr unerfahren mit PHP bin, weiß ich nicht, wie ich ihn erweitern soll, um mehrere Status zu ändern. Idealerweise möchte ich auch „WC-Bearbeitung“ in „Bezahlt“ und „WC-on-Hold“ in „Ausstehend“ umbenennen.

Hier ist der Code, den ich gefunden habe, um einen einzelnen Bestellstatus zu bearbeiten:

function wc_renaming_order_status( $order_statuses ) {
    foreach ( $order_statuses as $key => $status ) {
        $new_order_statuses[ $key ] = $status;
        if ( 'wc-completed' === $key ) {
            $order_statuses['wc-completed'] = _x( 'Order Received', 'Order status', 'woocommerce' );
        }
    }
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'wc_renaming_order_status' );

Weiß jemand, welche Änderungen ich vornehmen muss, um zusätzliche Status zu ändern?

Benutzer-Avatar
LoicTheAztec

Da der Auftragsstatus „Ausstehend“ vorhanden ist, müssen Sie auch den bestehenden Status „Ausstehend“ umbenennen. Wenn nicht, erhalten Sie 2 verschiedene Status mit demselben “Ausstehend”-Label.

Benennen Sie zuerst diese Bestellstatus um:

add_filter( 'wc_order_statuses', 'rename_order_statuses', 20, 1 );
function rename_order_statuses( $order_statuses ) {
    $order_statuses['wc-completed']  = _x( 'Order Received', 'Order status', 'woocommerce' );
    $order_statuses['wc-processing'] = _x( 'Paid', 'Order status', 'woocommerce' );
    $order_statuses['wc-on-hold']    = _x( 'Pending', 'Order status', 'woocommerce' );
    $order_statuses['wc-pending']    = _x( 'Waiting', 'Order status', 'woocommerce' );

    return $order_statuses;
}

Und auch in der Dropdown-Liste der Massenbearbeitungsliste:

add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 );
function custom_dropdown_bulk_actions_shop_order( $actions ) {
    $actions['mark_processing'] = __( 'Mark paid', 'woocommerce' );
    $actions['mark_on-hold']    = __( 'Mark pending', 'woocommerce' );
    $actions['mark_completed']  = __( 'Mark order received', 'woocommerce' );

    return $actions;
}

Geben Sie hier die Bildbeschreibung ein

Und auch das wird benötigt (für das obere Menü):

foreach( array( 'post', 'shop_order' ) as $hook )
    add_filter( "views_edit-$hook", 'shop_order_modified_views' );

function shop_order_modified_views( $views ){
    if( isset( $views['wc-completed'] ) )
        $views['wc-completed'] = str_replace( 'Completed', __( 'Order Received', 'woocommerce'), $views['wc-completed'] );

    if( isset( $views['wc-processing'] ) )
        $views['wc-processing'] = str_replace( 'Processing', __( 'Paid', 'woocommerce'), $views['wc-processing'] );

    if( isset( $views['wc-on-hold'] ) )
        $views['wc-on-hold'] = str_replace( 'On hold', __( 'Pending', 'woocommerce'), $views['wc-on-hold'] );

    if( isset( $views['wc-pending'] ) )
        $views['wc-pending'] = str_replace( 'Pending', __( 'Stucked', 'woocommerce'), $views['wc-pending'] );

    return $views;
}

(Dank an brasofilo: Ändere den WP-Admin-Beitragsstatusfilter für benutzerdefinierten Beitragstyp)

Geben Sie hier die Bildbeschreibung ein

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

Seit Woocommerce 3.3 zur Handhabung des Vorschau-Popups (Augensymbol) in der Admin-Bestellliste:

Auftragsstatusnamen überall ersetzen inkl. Woocommerce-Admin-Bestellvorschau

  • Das funktioniert wirklich gut. Wenn die Zeichenfolge jedoch übersetzt wurde, verwendet das “Untermenü” (ul.subsubsubsub) die übersetzte Zeichenfolge anstelle der neu zugewiesenen Zeichenfolge.

    – InanisAtheos

    17. Oktober 2019 um 11:37 Uhr

  • @PatrikAlienus Das hängt von vielen Dingen ab (z. B. wenn ein Plugin für Übersetzungen verwendet wird)…

    – LoicTheAztec

    17. Oktober 2019 um 16:21 Uhr

  • Ich verwende kein Plugin zum Übersetzen, sondern nur die .mo-Dateien im Sprachverzeichnis.

    – InanisAtheos

    23. Oktober 2019 um 7:03 Uhr


  • @PatrikAlienus Sie können versuchen, indem Sie die Hook-Priorität wie folgt erhöhen: add_filter( "views_edit-$hook", 'shop_order_modified_views', 1000 );

    – LoicTheAztec

    23. Oktober 2019 um 7:48 Uhr


1011270cookie-checkBenennen Sie mehrere Bestellstatus in Woocommerce um

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy