Fügen Sie eine benutzerdefinierte Spalte mit Metadaten zur Tabelle Meine Kontobestellungen in Woocommerce 3+ hinzu

Lesezeit: 3 Minuten

Benutzeravatar von Dimas Anugerah
Dimas Anugera

Woocommerce 3.5.x hat eine spezielle Seite im Bereich des Benutzerkontos (Mein Konto), auf der die vorherigen Bestellungen des Benutzers angezeigt werden.

Diese Seite wird jetzt standardmäßig mit 5 Spalten angezeigt.

Hier der Screenshot des Woocommerce-Bestellbereichs mit 5 Spalten:

Meine Bestellungen

Ich finde keine Möglichkeit, dies zu ändern.

Wie kann ich im Standard eine neue Spalte hinzufügen?

Benutzeravatar von LoicTheAztec
LoicTheAztec

Dies erfordert 2 Funktionen, die eine neue Spalte hinzufügen

Der zweite Funktions-Hook ist ein zusammengesetzter Hook: woocommerce_my_account_my_orders_column_{$column_id} Wo {$column_id} müssen durch den Spaltenschlüssel-Slug ersetzt werden, der in der ersten Funktion festgelegt ist.

Diese zweite Funktion verwaltet die angezeigten Zeilenwerte und Sie können beispielsweise ein benutzerdefiniertes Feld hinzufügen, um benutzerdefinierte Auftragsmetadatenwerte zu erhalten.

Der Code:

add_filter( 'woocommerce_account_orders_columns', 'add_account_orders_column', 10, 1 );
function add_account_orders_column( $columns ){
    $columns['custom-column'] = __( 'New Column', 'woocommerce' );

    return $columns;
}

add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'add_account_orders_column_rows' );
function add_account_orders_column_rows( $order ) {
    // Example with a custom field
    if ( $value = $order->get_meta( '_custom_field' ) ) {
        echo esc_html( $value );
    }
}

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


Sie sind fertig und haben der Tabelle Meine Kontobestellungen eine benutzerdefinierte Spalte hinzugefügt:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie Änderungen an der HTML-Ausgabe der Tabelle vornehmen möchten, müssen Sie die Vorlagendatei überschreiben: myaccount/orders.php

Wenn Sie die Bestellvorlage auf der Seite „Mein Konto“ nicht ändern möchten. Hier ist, was Sie tun müssen.

Erste:

function wc_add_myaccount_order_column( $columns ) {
    $columns[ 'custom-column' ] = __( 'Custom Column', 'woocommerce' );
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'wc_add_myaccount_order_column' );

Zweite:

function wc_custom_column_display( $order ) {
    // do something here
    echo "testing";
}
add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'wc_custom_column_display' );

Der obige Code wird angezeigt “testen” in jeder Bestellung unter “Benutzerdefinierte Spalte” Spalte.

Hinweis: Wenn Sie tatsächlich die gesamte Vorlage ändern möchten, wie zum Beispiel das Design. Sie können der ersten Antwort oben folgen.

Nur um die akzeptierte Antwort zu verbessern, füge ich eine Zeile hinzu, um die Position der Spalte (nach der Summe) auszuwählen:

function sv_wc_add_my_account_orders_column( $columns ) {

    $new_columns = array();

    foreach ( $columns as $key => $name ) {

        $new_columns[ $key ] = $name;

        // add ship-to after order status column
        if ( 'order-total' === $key ) {  //this is the line!
            $new_columns['custom-column'] = __( 'Custom Column', 'woocommerce' );
        }
    }

    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );


    function wc_custom_column_display( $order ) {
        // do something here
        echo "testing";
    }
    add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'wc_custom_column_display' );

Mit WooCommerce 5.9 konnte ich die Antwort von LiocTheAztect nicht zum Laufen bringen. Was für mich funktionierte, war:

add_filter( 'woocommerce_account_orders_columns', 
'add_customer_email_column');
    function add_customer_email_column( $columns ){
        $new_columns = [
        "order-number" => $columns["order-number"],
        // ...
        "customer-email" => __( 'Customer Email', '' ),
        // ...
        "order-actions" => $columns["order-actions"]
    ];
    return $new_columns;
}

add_action( 'woocommerce_my_account_my_orders_column_customer-email', 
'add_customer_email_content' );
    function add_customer_email_content($order) {
    echo esc_html($order->get_billing_email());
}

Ohne das if ($value = $order->get_meta( '_custom_field' )) Block. Ich hoffe es hilft.

1447050cookie-checkFügen Sie eine benutzerdefinierte Spalte mit Metadaten zur Tabelle Meine Kontobestellungen in Woocommerce 3+ hinzu

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

Privacy policy