Wie kann ich benutzerdefinierte Felder in Woocommerce-Bestellungen im Admin-Panel anzeigen?

Zur Zeit füge ich ein benutzerdefiniertes Abrechnungsfeld in woocommerce hinzu

function custom_override_checkout_fields( $fields ) { $fields['billing']['billing_phone_new'] = array( 'label' => __('Phone 2', 'woocommerce'), 'placeholder' => _x('Phone 2', 'placeholder', 'woocommerce'), 'required' => false, 'class' => array('form-row-wide'), 'clear' => true ); return $fields; } add_filter('woocommerce_checkout_fields','custom_override_checkout_fields'); 

Ich muss diesen Feldwert in der Admin-Seite bearbeiten. Derzeit kann ich alle anderen Werte in der Rechnungsadresse bearbeiten, aber dieser Wert erscheint nicht im Admin-Bereich. Ich verwende den folgenden Code nur, um den Wert im Admin-Bereich zu sehen.

 function order_phone_backend($order){ echo "

Billing phone 2: " . get_post_meta( $order->id, '_billing_phone_new', true ) . "


"; } add_action( 'woocommerce_admin_order_data_after_billing_address', 'order_phone_backend', 10, 1 );

Ich lese die Dokumentation https://docs.woothemes.com/document/tutorial-customizing-checkout-fields-using-actions-and-filters/ . Aber alles in diesem Dokument funktioniert korrekt erwarten billing_phone / Phone ist Hinweis siehe unter Benutzerdefiniertes Feld. Ich überprüfe die Bildschirmoption, aber ich habe bereits das benutzerdefinierte Feld angekreuzt. Ein anderes benutzerdefiniertes Feld und dessen Wert sind sichtbar und editierbar.

Wie kann ich diesen Wert im Backend bearbeiten? Bitte helfen Sie.

Solutions Collecting From Web of "Wie kann ich benutzerdefinierte Felder in Woocommerce-Bestellungen im Admin-Panel anzeigen?"

Der von Ihnen angegebene Code ist unvollständig. Nicht sicher, ob das der einzige Code ist, den Sie verwenden, um zu erreichen, was Sie wollen. Neben dem ersten Codeblock, den Sie zur Verfügung gestellt haben, füge ich den Rest des Codes hinzu, der benötigt wird, um das neue Feld im Backend im Feld “Order Details” anzuzeigen und es über benutzerdefinierte Felder editierbar zu machen. Bitte beachten Sie, dass Sie in Ihrem zweiten Codeblock den Feldschlüssel als _billing_new_phone . Jeder Name eines benutzerdefinierten Feldschlüssels, der mit _ (Unterstrich) beginnt, ist ein verstecktes benutzerdefiniertes Feld und wird nicht im Backend unter “Benutzerdefinierte Felder” angezeigt.

 /** * Process the checkout */ add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); function my_custom_checkout_field_process() { // Check if set, if its not set add an error. if ( ! $_POST['billing_phone_new'] ) wc_add_notice( __( 'Phone 2 is compulsory. Please enter a value' ), 'error' ); } /** * Update the order meta with field value */ add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' ); function my_custom_checkout_field_update_order_meta( $order_id ) { if ( ! empty( $_POST['billing_phone_new'] ) ) { update_post_meta( $order_id, 'billing_phone_new', sanitize_text_field( $_POST['billing_phone_new'] ) ); } } /** * Display field value on the order edit page */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 ); function my_custom_checkout_field_display_admin_order_meta($order){ echo '

'.__('Phone 2').':
' . get_post_meta( $order->id, 'billing_phone_new', true ) . '

'; }

WooCommerce macht das neue Checkout-Feld nicht unter dem Standard-Feld “Order Details” editierbar. Es wird in diesem Feld als “Nur-Ansicht” -Modus verfügbar sein, aber Sie können dasselbe über den benutzerdefinierten Standard-Wortblock von WordPress bearbeiten. Siehe unten Screenshot.

Bildbeschreibung hier eingeben

Hier ist die Lösung: Der direkte Zugriff auf Produktdaten ist nicht erlaubt, z

 $product->id 

Die richtige Methode für die Zukunft ist:

 $product->get_id()