У меня возникла уникальная ситуация: я создал настраиваемое метаполе для продуктов в WooCommerce и не могу правильно сохранить значение с метаданными позиции заказа при размещении заказа.
Вот code, который я использую для создания настраиваемого метаполя:
Я поместил его на вкладку "Общие", и оно отображается для продуктов типа "Переменная" и "Простой", а это все, что мы используем.
Поле не всегда имеет или не всегда нуждается в значении.
Значение предназначено только для внутреннего использования и не должно отображаться на внешнем интерфейсе или для клиентов каким-либо образом или на каком-либо этапе процесса заказа.
В общем: когда кто-то размещает заказ, включающий продукт, имеющий значение в этом поле, я бы хотел, чтобы значение поля во время заказа сохранялось с метаданными позиции заказа. Цель состоит в том, чтобы иметь возможность включать эти данные в экспорт через идентификатор/ключ (_custom_product_merch_shop_cle
).
В идеале я хотел бы:
Наконец, если значения будут меняться очень редко, но на тот случай, если это произойдет, я бы хотел, чтобы все предыдущие заказы и данные о заказах оставались в прежнем значении и не наследовали новое/замененное введенное значение.
Спасибо за любую помощь!
// Create field on product page admin
add_action( 'woocommerce_product_options_general_product_data', 'tpc_woocommerce_product_custom_fields' );
function tpc_woocommerce_product_custom_fields () {
woocommerce_wp_text_input(
array(
'id' => '_custom_product_merch_shop_cle',
'label' => esc_html__( 'Merch Shop Art', 'woocommerce' ),
'placeholder' => esc_html__( 'Enter CLE here', 'woocommerce' ),
'desc_tip' => 'true',
'description' => esc_html__( 'Use to add CLE# for merch shops', 'woocommerce' ),
)
);
}
// Save field value with product
add_action( 'woocommerce_process_product_meta', 'tpc_woocommerce_product_custom_fields_save' );
function tpc_woocommerce_product_custom_fields_save( $post_id ){
$custom_field_value = isset( $_POST['_custom_product_merch_shop_cle'] ) ? wc_clean( wp_unslash( $_POST['_custom_product_merch_shop_cle'] ) ) : '';
update_post_meta( $post_id, '_custom_product_merch_shop_cle', $custom_field_value );
}