Разработка веб-магазина WooCommerce с поставщиками (вендорами WC).
Мне нужно отобразить настраиваемое поле, которое я создал в профиле поставщиков. Он будет отображаться под именем товара и поставщика в файле order-details.php
.
Как отобразить поле профиля с помощью этого идентификатора продавца / продавца?
Кто-нибудь может мне помочь?
Вот скриншот, о котором я бы солгал:
Пользовательские поля профиля
Добавление пользовательских полей на страницу профиля пользователя
add_action( 'show_user_profile', 'wp_added_user_profile_fields' ); function wp_added_user_profile_fields( $user ) { ?> <table class="form-table"> <tr> <th><label for="billing_enumber"><?php _e( "eNumber", 'woocommerce' ); ?></label></th> <td> <input type="text" name="billing_enumber" id="billing_enumber" class="regular-text" value="<?php echo esc_attr( get_the_author_meta( 'billing_enumber', $user->ID ) ); ?>"/> <span class="description"><?php _e( 'Please enter your eNumber.', 'woocommerce' ); ?></span> </td> </tr> </table> <?php }
Добавление функции обновления в пользовательские поля в профиле пользователя
add_action( 'edit_user_profile', 'wp_added_user_profile_fields' ); function wp_save_added_user_profile_fields( $user_id ) { if ( current_user_can( 'edit_user', $user_id ) ) { update_user_meta( $user_id, 'billing_enumber', trim($_POST['billing_enumber'] ) ); $saved = true; } return true; }
Благодарю.
Вы можете сделать это чистым способом в 2 шага:
ШАГ 1) Сначала вам нужно добавить атрибут в свои продукты, чтобы получить «читаемую метку» для вашего настраиваемого значения поля , которое будет отображаться как метаданные элементов заказа.
В вашем случае вы создадите атрибут «Billing E Number»:
Затем вы установите его с любым значением (поскольку оно будет заменено вашим настраиваемым значением поля) в ваших целевых продуктах, которые могут быть простыми или переменными. Если вы не установите значение с этим атрибутом, оно не будет установлено и сохранено при обновлении продукта.
После этого вы будете иметь это после сохранения и обновления:
Затем атрибуты slugs в woocommerce начинаются с pa_
. Таким образом, ваш атрибут slug будет: pa_billing-e-number
Мы будем использовать его в приведенной ниже функции, чтобы отобразить эту удобочитаемую метку для вашего пользовательского значения поля. поэтому вы попадете в пункты заказа: Billing E Number: (some value)
ШАГ 2) Ваша пользовательская функция зацепилась за
woocommerce_add_order_item_meta
действияwoocommerce_add_order_item_meta
.
Теперь, чтобы отобразить ваше настраиваемое поле в деталях позиций заказов, вам нужно будет получить это переданное значение для сохранения в качестве метаданных элементов заказа, и мы будем использовать здесь pa_billing-e-Number
как meta_key
.
Таким образом, код будет просто что-то вроде:
add_action('woocommerce_add_order_item_meta', 'add_custom_order_item_meta_data', 1, 3 ); function add_custom_order_item_meta_data( $item_id, $values, $cart_item_key ) { global $order; // Get the user ID $user_id = get_post_meta( $order->id, '_customer_user', true ); // Get User custom field value for 'billing_enumber' $billing_e_number = get_user_meta( $user_id, 'billing_enumber', true ); // Setting this custom field in order item meta if(!empty($billing_e_number)) wc_add_order_item_meta($item_id, 'pa_billing-e-number', $billing_e_number, true); }
Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Затем на лицевой стороне в разделе «Моя учетная запись»> «Заказы»> «Просмотр заказа» вы получите следующее:
Как вы можете видеть, вы получаете ровно что-то подобное в обычном поведении woocommerce. Значение здесь просто для иллюстрации этого примера …
Этот пример действительно протестирован и работает.