Zeigen Sie benutzerdefinierte Metadaten in der WooCommerce-Admin-Reihenfolge nach der Rechnungsadresse an

Lesezeit: 2 Minuten

Nachdem ich die Antwort von 7uc1f3r zum Hinzufügen eines Auswahlfelds mit Zeitintervallen basierend auf Öffnungs-, Schließ- und Pausenzeiten in der WooCommerce-Kaufabwicklung gelesen hatte, tat ich mein Bestes, um zu verstehen, wie die tatsächliche Zeit zur Bestellung hinzugefügt wird.

Dies wurde bereits in der Ausgangsfrage erwähnt, aber wenn ich diesen Code so ändere, dass er mit dem Antwortcode von 7uc1f3r übereinstimmt, erhalte ich einen Hinweis auf der Bestellseite (admin).

Es sagt:

Notice: id was called incorrectly. Order properties should not be accessed directly. Backtrace: require('wp-admin/edit-form-advanced.php'), do_meta_boxes, WC_Meta_Box_Order_Data::output, do_action('woocommerce_admin_order_data_after_billing_address'), WP_Hook->do_action, WP_Hook->apply_filters, wps_select_checkout_field_display_admin_order_meta, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong Please see Debugging in WordPress for more information. (This message was added in version 3.0.) in /wp-includes/functions.php on line 5311

Die tatsächliche Lieferzeit wird angezeigt, jedoch mit diesem Hinweis oben.

Das gesagt; Ich habe mein Bestes getan, um den Code weiter zu ändern, um zu überprüfen, ob die Lieferzeit nicht leer ist, und wenn ja, zeige es. Das hat auch nicht geholfen – der Hinweis ist immer noch da.

Hier habe ich den Code geändert in:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    
    if ( get_post_meta( $order->get_id(), 'delivery_time' != '' ) ) {
    
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . get_post_meta($order->id, 'delivery_time', true) . '</p>';
    }
}

Ich bin mir nicht sicher, wie ich den Hinweis loswerden kann.

Benutzer-Avatar
LoicTheAztec

Das Problem kommt von $order->idversuchen Sie stattdessen Folgendes:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    $delivery_time = $order->get_meta('delivery_time');
    
    if ( ! empty($delivery_time) ) {
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . $delivery_time . '</p>';
    }
}

Jetzt sollte es funktionieren.

1010580cookie-checkZeigen Sie benutzerdefinierte Metadaten in der WooCommerce-Admin-Reihenfolge nach der Rechnungsadresse an

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

Privacy policy