WooCommerce zeigt benutzerdefinierte Spalte an

Lesezeit: 6 Minuten

WooCommerce zeigt benutzerdefinierte Spalte an
Christoph S. Ackermann

Ich möchte eine zusätzliche Spalte im Backend von WooCommerce (in der Bestellübersicht) anzeigen. Die Spalte sollte ein benutzerdefiniertes Feld enthalten, das ich definiert habe (Lieferdatum).

Wie macht man das?

WooCommerce zeigt benutzerdefinierte Spalte an
post_ahead

Falls es noch jemand braucht – Anleitung zum Hinzufügen neuer Spalten in der Woocommerce-Bestellliste. Sie müssen die Standardspalten nicht deaktivieren, fügen Sie dies einfach in Ihre functions.php ein und Ihr Code ist für Updates gültig.

1. Spaltenposition und Namen definieren

add_filter( 'manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION' );
function MY_COLUMNS_FUNCTION($columns){
    $new_columns = (is_array($columns)) ? $columns : array();
    unset( $new_columns['order_actions'] );

    //edit this for you column(s)
    //all of your columns will be added before the actions column
    $new_columns['MY_COLUMN_ID_1'] = 'MY_COLUMN_1_TITLE';
    $new_columns['MY_COLUMN_ID_2'] = 'MY_COLUMN_2_TITLE';
    //stop editing

    $new_columns['order_actions'] = $columns['order_actions'];
    return $new_columns;
}

2. Zeigen Sie für jede benutzerdefinierte Spalte die Werte an

add_action( 'manage_shop_order_posts_custom_column', 'MY_COLUMNS_VALUES_FUNCTION', 2 );
function MY_COLUMNS_VALUES_FUNCTION($column){
    global $post;
    $data = get_post_meta( $post->ID );

    //start editing, I was saving my fields for the orders as custom post meta
    //if you did the same, follow this code
    if ( $column == 'MY_COLUMN_ID_1' ) {    
        echo (isset($data['MY_COLUMN_1_POST_META_ID']) ? $data['MY_COLUMN_1_POST_META_ID'] : '');
    }
    if ( $column == 'MY_COLUMN_ID_2' ) {    
        echo (isset($data['MY_COLUMN_2_POST_META_ID']) ? $data['MY_COLUMN_2_POST_META_ID'] : '');
    }
    //stop editing
}

3. (optional) Funktion, um die Spalten sortierbar zu machen

add_filter( "manage_edit-shop_order_sortable_columns", 'MY_COLUMNS_SORT_FUNCTION' );
function MY_COLUMNS_SORT_FUNCTION( $columns ) {
    $custom = array(
        //start editing

        'MY_COLUMN_ID_1'    => 'MY_COLUMN_1_POST_META_ID',
        'MY_COLUMN_ID_2'    => 'MY_COLUMN_2_POST_META_ID'

        //stop editing
    );
    return wp_parse_args( $custom, $columns );
}

  • Sehr gut erklärte Antwort. Beim ersten Beispiel fehlt ein Semikolon

    – Devin Walker

    26. September 2013 um 20:44 Uhr

  • Weißt du, ob das in WooCommerce 2.1.3 noch funktioniert? Ich habe es versucht, aber es scheint nicht zu funktionieren; Es werden keine benutzerdefinierten Spalten hinzugefügt. Es scheint wie der Filter angewendet wird; wenn ich setze die() in der Funktion werden keine Spalten angelegt, ansonsten bekomme ich keinerlei Änderung.

    – Dr

    5. März 2014 um 17:58 Uhr

  • @Dre Der erste Filter benötigt eine etwas höhere Priorität als die Standardeinstellung von 10. Als ich ihn von einem Plugin aus ausgeführt habe, hat es 11 funktioniert: add_filter( 'manage_edit-shop_order_columns', 'MY_COLUMNS_FUNCTION', 11 );

    – Orionrush

    8. Juni 2014 um 13:17 Uhr

  • Funktioniert wahrscheinlich nicht, weil WooCommerce seinen Code absichtlich aktualisiert und geändert hat, um zu versuchen, uns alle zu erpressen, indem es 49 $ für genau dieses Ergebnis verlangt. woothemes.com/products/admin-custom-order-fields

    – Ivandude

    2. Juli 2014 um 2:18 Uhr


  • +2 sehr gute Antwort. Optionaler Schritt 3 funktioniert gut (läuft mit dem neuesten WooCommerce)

    – Ben

    8. Dezember 2014 um 5:22 Uhr

Um einen neuen Spaltencoupon in der Woo-Commerce-Bestelltabelle hinzuzufügen und alle Couponcodes entsprechend der Bestellung zu erhalten. Sie müssen Ihre function.php kopieren und einfügen.

add_filter('manage_edit-shop_order_columns', 'custom_shop_order_column', 11);

function custom_shop_order_column($columns) {
    //add columns
    $columns['my-column1'] = __('Coupons Code', 'theme_slug');
    return $columns;
}

// adding the data for each orders by column (example)
add_action('manage_shop_order_posts_custom_column', 'cbsp_credit_details', 10, 2);

function cbsp_credit_details($column) {
    global $post, $woocommerce, $the_order;
    $order_id = $the_order->id;

    switch ($column) {
        case 'my-column1' :
            // $myVarOne = wc_get_order_item_meta( $order_id, 15, true );
            if ($the_order->get_used_coupons()) {

                $coupons_count = count($the_order->get_used_coupons());
                foreach ($the_order->get_used_coupons() as $coupon) {
                    echo $coupon;

                    $i++;
                }

                echo '</p>';
            }
           // echo $myVarOne;
            break;
    }
}

Probieren Sie dies aus, Sie erhalten Ihre Lösung. Schreiben Sie einfach den folgenden Code auf Ihren Funktion.php Datei.

add_filter( 'manage_edit-shop_order_columns','your_function_name',10 );
function your_function_name($columns){
        $columns['delivery_date'] = __('Delivery date','textdomain');
        return $columns;
    }
add_action( 'manage_shop_order_posts_custom_column','your_other_function_name',20 );
function  your_other_function_name($column)
{
    swith($column)
    {
        case 'delivery_date':  // your custom code here and do what you want.
    }
}

Folgendes funktioniert für WooCommerce 2.6.2. Sie sollten sich zwei neue Hooks ansehen:

1. Definieren Sie Spaltenüberschriften

add_filter('woocommerce_admin_order_item_headers', 'so13683162_headers');
function so13683162_headers($order) {
    echo "<th>FIELD1</th>";
}

2. Füllen Sie Werte in Zeilen aus

add_filter('woocommerce_admin_order_item_values', 'so13683162_values');
function so13683162_values($product) {
    if (isset($product -> id)) {
        $attrs = get_post_meta($product -> id, "_product_attributes", true);
        echo "<td>" . $attrs["FIELD1"]["value"] . "</td>";
    }
}

WooCommerce zeigt benutzerdefinierte Spalte an
Omak

Ich bin jetzt auf Woocommerce gestoßen. Habe ein benutzerdefiniertes Feld Persönliche Registrierungsnummer hinzugefügt und wollte nun, dass es auf der Bestellübersichtsseite angezeigt wird.

Ich habe es geschafft, die Spalte hinzuzufügen, konnte aber immer noch nicht den Wert des benutzerdefinierten Felds für jede Bestellung abrufen.

Folgendes habe ich getan:

// Removed Existing Order Page collumns
remove_filter('manage_edit-shop_order_columns', 'woocommerce_edit_order_columns');

// Added My own filter to Show the PRN - Personal Registration field
add_filter('manage_edit-shop_order_columns', 'omak_edit_order_columns');

// The omak_edit_order_columns definition
/*** Taken from admin/post_types/shop_order.php ***/
function omak_edit_order_columns($columns){
    global $woocommerce;

    $columns = array();

    $columns["cb"]              = "<input type=\"checkbox\" />";
    $columns["order_status"]        = __( 'Status', 'woocommerce' );    
    $columns["order_title"]         = __( 'Order', 'woocommerce' );
    $columns["order_prn"]           = __( 'PRN', 'woocommerce' );    // This is the line which added the column after the Title Column
    $columns["billing_address"]     = __( 'Billing', 'woocommerce' );
    $columns["shipping_address"]    = __( 'Shipping', 'woocommerce' );
    $columns["total_cost"]      = __( 'Order Total', 'woocommerce' );
    $columns["order_comments"]  = '<img alt="' . esc_attr__( 'Order Notes', 'woocommerce' ) . '" src="'%20.%20$woocommerce->plugin_url()%20.%20'/assets/images/order-notes_head.png" class="tips" data-tip="' . __( 'Order Notes', 'woocommerce' ) . '" width="12" height="12" />';

    $columns["note"]                = '<img src="'%20.%20$woocommerce->plugin_url()%20.%20'/assets/images/note_head.png" alt="' . __( 'Customer Notes', 'woocommerce' ) . '" class="tips" data-tip="' . __( 'Customer Notes', 'woocommerce' ) . '" width="12" height="12" />';

    $columns["order_date"]          = __( 'Date', 'woocommerce' );
    $columns["order_actions"]       = __( 'Actions', 'woocommerce' );

    return $columns;
}

Lass mich wissen, ob es dir hilft…

Ich muss mich damit befassen, wie ich seine Werte für jeden Auftrag erhalte.

Wie kommentiert: Die Funktionsdefinition existiert in shop_order.php im WooCommerce-Plugin. Lassen Sie mich wissen, wenn jemand es aussortiert … oder weiß, wie es geht.

Danke, (Entschuldigung, war mit etwas beschäftigt, konnte also nicht zurücklesen, um nach Fehlern zu suchen)

964930cookie-checkWooCommerce zeigt benutzerdefinierte Spalte an

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

Privacy policy