Wie zeige ich vor dem Bearbeiten und als Eingabefeld ein benutzerdefiniertes Versandfeld als Etikett an, während Sie in Php

PHP-Programmierer chatten hier
Anonymous
 Wie zeige ich vor dem Bearbeiten und als Eingabefeld ein benutzerdefiniertes Versandfeld als Etikett an, während Sie in

Post by Anonymous »

Ich füge ein neues Feld im Versandabschnitt hinzu und versuche, es vor dem Bearbeiten und als Eingabefeld bei der Bearbeitung auf der Seite von WooCommerce Administrator als Label anzuzeigen, aber ich konnte dies nicht vollständig erreichen. < /p>
Ich habe ein neues Versandfeld mit woocommerce_checkout_fields erstellt, unter der Annahme, dass WooCommerce es automatisch als Meta -Daten speichert: < /p>

Code: Select all

// Add Shipping Email field to the Checkout page (WooCommerce automatically saves it)
add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields');

function custom_override_checkout_fields($fields) {
$fields['shipping']['shipping_email'] = array(
'label'       => __('Shipping Email', 'woocommerce'),
'placeholder' => __('E-mail please', 'woocommerce'),
'required'    => true,
'class'       => array('form-row-wide'),
'clear'       => true,
'type'        => 'email',
);

return $fields;
}
< /code>
Danach habe ich versucht, das Feld auf der Seite "Administratorbestelldetails" als Beschriftung mit: < /p>
anzuzeigen// Display Shipping Email as a label in Admin Order Details (before editing)
add_action('woocommerce_admin_order_data_after_shipping_address', 'display_shipping_email_admin');

function display_shipping_email_admin($order) {
$shipping_email = $order->get_meta('_shipping_email', true);

if (!empty($shipping_email)) {
echo '
[b]' . __('Shipping Email', 'woocommerce') . ':[/b] ' . esc_html($shipping_email) . '
';
} else {
echo '
[b]' . __('Shipping Email', 'woocommerce') . ':[/b] (empty)
';
}
}
< /code>
Bei der Bearbeitung der Reihenfolge erscheint es jedoch immer noch als Etikett anstelle eines Eingabefeldes.
Vor dem Bearbeiten wird das Feld als Etikett
während des Bearbeitens angezeigt. Es wird in ein Eingabefeld
Problem Aktualisieren Sie die Bestellung, es funktioniert als erwartet. < /p>
// Display Shipping Email as a label in the shipping address before editing
add_filter('woocommerce_order_formatted_shipping_address', 'add_shipping_email_to_formatted_shipping_address', 100, 2);

function add_shipping_email_to_formatted_shipping_address($shipping_address, $order) {
$shipping_email = $order->get_meta('_shipping_email', true);

if (!empty($shipping_email)) {
$shipping_address['shipping_email'] = __('Shipping Email', 'woocommerce') . ': ' . esc_html($shipping_email);
}

return $shipping_address;
}

// Enable Shipping Email as an editable input field in Admin Order Edit Page
add_filter('woocommerce_admin_shipping_fields', 'admin_shipping_email_editable_field');

function admin_shipping_email_editable_field($fields) {
$fields['shipping_email'] = array(
'label' => __('Shipping Email', 'woocommerce'),
'type'  => 'email',
'show'  => true,
);

return $fields;
}

// Save the new Shipping Email field
add_action('woocommerce_process_shop_order_meta', 'custom_save_admin_shipping_email');

function custom_save_admin_shipping_email($order_id) {
if (!empty($_POST['shipping_email'])) {
$order = wc_get_order($order_id);
$order->update_meta_data('_shipping_email', sanitize_email($_POST['shipping_email']));
$order->save();
} else {
$order = wc_get_order($order_id);
$order->delete_meta_data('_shipping_email');
$order->save();
}
}
Ich möchte vor dem Bearbeiten und als bearbeitbarer Eingabefeld bei der Bearbeitung in der Seite "WooCommerce Administrator" ein neues Versandfeld (oder ein beliebiges benutzerdefiniertes Auschecken) als Etikett anzeigen.
Ich versuche, der WooCommerce -Struktur richtig zu folgen. < /p>
Wie kann ich dies richtig implementieren? < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post