Как отобразить пользовательское поле доставки в качестве метки перед редактированием и в качестве ввода поля при редактиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как отобразить пользовательское поле доставки в качестве метки перед редактированием и в качестве ввода поля при редакти

Сообщение Anonymous »

Я добавляю новое поле в разделе доставки и пытаюсь отобразить его в качестве метки перед редактированием и в качестве ввода при редактировании на странице заказа администратора woocommerce, но я не смог полностью достичь этого. /p>
Я создал новое поле доставки, используя woocommerce_checkout_fields, предполагая, что woocommerce автоматически сохраняет его в виде метадан: < /p>

Код: Выделить всё

// 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>
После этого я попытался отобразить поле на странице сведений за заказ администратора в качестве метки с использованием: < /p>
// 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>
Однако при редактировании порядка он все еще появляется как метка вместо поля ввода.
Я предположил, что это было неверно, и изменил мой код следующим образом: < /p>
Перед редактированием поле появляется как метка
во время редактирования, оно превращается в поле ввода
Проблема: при создании нового порядка поле пустое, но когда я вручную Обновить заказ, он работает Как и ожидалось. < /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();
}
}
Я хочу правильно отобразить новое поле доставки (или любое пользовательское поле оформления заказа) в качестве метки перед редактированием и в качестве редактируемого поля ввода при редактировании на странице заказа администратора Woocommerce.
Я пытаюсь правильно следовать структуре Woocommerce. < /p>
Как я могу правильно это реализовать? < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-an-input
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»