Сохраните значение поля метаданных пользовательского продукта WooCommerce в метаданных позиции заказа

У меня возникла уникальная ситуация: я создал настраиваемое метаполе для продуктов в 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 );

}
Агафон
Вопрос задан28 февраля 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.