Сериализация - это процесс преобразования объекта в поток, чтобы он мог быть сохранен в любом физическом файле, подобном (XML), или может быть сохранен в базе данных. Основной задачей Serialization в C # является сохранение объекта и сохранение его на любом заданном носителе, таком как поток, физический файл или база данных.
Обновлено - Есть несколько небольших ошибок, таких как:
$order->get_id()
$order
, необходимую в вашем коде. Дополнительные советы:
woocommerce_checkout_create_order
ловушку действия, введенную в Woocommerce 3, вместо старого woocommerce_checkout_update_order_meta
действие крюк. WC_Data
get_meta()
с объектом WC_Order
вместо get_post_meta()
Вот ваш полный повторный код:
// Display a custom checkout select field after Order notes
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field', 10, 1 );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field">
<h2>' . __('Bezorg moment') . '</h2>';
woocommerce_form_field( 'delivery_date', array(
'type' => 'select',
'options' => array(
'17:30-18:00' => __('17:30 - 18:00', 'woocommerce' ),
'18:00-18:30' => __('18:00 - 18:30', 'woocommerce' )),
'class' => array('my-field-class form-row-wide'),
'label' => __('Bezorgtijd'),
'placeholder' => __('Zo snel mogelijk'),
), $checkout->get_value( 'delivery_date' ));
echo '</div>';
}
// Save the dropdown custom field selected value as order custom meta data:
add_action( 'woocommerce_checkout_create_order', 'my_custom_checkout_field_update_order_meta', 10, 2 );
function my_custom_checkout_field_update_order_meta( $order, $data ) {
if ( isset( Обновлено - Есть несколько небольших ошибок, таких как:
- Начиная с Woocommerce 3, для получения идентификатора заказа из объекта Order используйте:
$order->get_id()
[1113 ] В вашей последней функции отсутствует переменная параметра из подключаемой функции, поэтому вы не можете получить правильную переменную WC_Order Object $order
, необходимую в вашем коде. -
- Правильный мета-ключ поста -
Дополнительные советы:
- Лучше использовать
woocommerce_checkout_create_order
ловушку действия, введенную в Woocommerce 3, вместо старого woocommerce_checkout_update_order_meta
действие крюк. - Вы можете использовать метод
WC_Data
get_meta()
с объектом WC_Order
вместо get_post_meta()
Вот ваш полный повторный код:
[110] Код идет в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Если вы хотите настроить таргетинг только на уведомление по электронной почте «Новый заказ» , используйте это вместо:
// Display the custom field value on "New Order" notification:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
if( 'new_order' === $email->id )
echo '<p><strong>'.__('delivery_date').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}
[ 1122]POST['delivery_date']) && ! empty(
Обновлено - Есть несколько небольших ошибок, таких как:
- Начиная с Woocommerce 3, для получения идентификатора заказа из объекта Order используйте:
$order->get_id()
[1113 ] В вашей последней функции отсутствует переменная параметра из подключаемой функции, поэтому вы не можете получить правильную переменную WC_Order Object $order
, необходимую в вашем коде. -
- Правильный мета-ключ поста -
Дополнительные советы:
- Лучше использовать
woocommerce_checkout_create_order
ловушку действия, введенную в Woocommerce 3, вместо старого woocommerce_checkout_update_order_meta
действие крюк. - Вы можете использовать метод
WC_Data
get_meta()
с объектом WC_Order
вместо get_post_meta()
Вот ваш полный повторный код:
[110] Код идет в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Если вы хотите настроить таргетинг только на уведомление по электронной почте «Новый заказ» , используйте это вместо:
// Display the custom field value on "New Order" notification:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
if( 'new_order' === $email->id )
echo '<p><strong>'.__('delivery_date').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}
[ 1122]POST['delivery_date']) ) {
$order->update_meta_data( 'Bezorg moment', sanitize_text_field(
Обновлено - Есть несколько небольших ошибок, таких как:
- Начиная с Woocommerce 3, для получения идентификатора заказа из объекта Order используйте:
$order->get_id()
[1113 ] В вашей последней функции отсутствует переменная параметра из подключаемой функции, поэтому вы не можете получить правильную переменную WC_Order Object $order
, необходимую в вашем коде. -
- Правильный мета-ключ поста -
Дополнительные советы:
- Лучше использовать
woocommerce_checkout_create_order
ловушку действия, введенную в Woocommerce 3, вместо старого woocommerce_checkout_update_order_meta
действие крюк. - Вы можете использовать метод
WC_Data
get_meta()
с объектом WC_Order
вместо get_post_meta()
Вот ваш полный повторный код:
[110] Код идет в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Если вы хотите настроить таргетинг только на уведомление по электронной почте «Новый заказ» , используйте это вместо:
// Display the custom field value on "New Order" notification:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
if( 'new_order' === $email->id )
echo '<p><strong>'.__('delivery_date').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}
[ 1122]POST['delivery_date'] ) );
}
}
// Display the custom field value on admin order pages after billing adress:
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 '<p><strong>'.__('Bezorg moment').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}
// Display the custom field value on email notifications:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
echo '<p><strong>'.__('Bezorg moment').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}
Код идет в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Если вы хотите настроить таргетинг только на уведомление по электронной почте «Новый заказ» , используйте это вместо:
// Display the custom field value on "New Order" notification:
add_action( 'woocommerce_email_after_order_table', 'custom_woocommerce_email_order_meta_fields', 10, 4 );
function custom_woocommerce_email_order_meta_fields( $order, $sent_to_admin, $plain_text, $email ) {
if( 'new_order' === $email->id )
echo '<p><strong>'.__('delivery_date').':</strong> ' . $order->get_meta('Bezorg moment') . '</p>';
}