woocommerce - Добавить пользовательское поле продукта для мета товара - PullRequest
0 голосов
/ 17 июня 2019

Я использую код ниже, чтобы добавить дополнительное поле к продукту и сохранить его в деталях заказа. отлично работает с простым продуктом, но с переменным товаром, настраиваемое поле не сохраняет метаданные заказа.

// Display Fields
add_action( 'woocommerce_product_options_inventory_product_data', 'woo_add_guarantee_fields' );

function woo_add_guarantee_fields() {

  global $woocommerce, $post;

  echo '<div class="options_group">';

// Select
woocommerce_wp_select( 
array( 
    'id'      => 'guarantee_select', 
    'label'   => __( 'guarantee', 'woocommerce' ), 
    'options' => array(
        '' => __( '', 'woocommerce' ),
        '1'   => __( '1', 'woocommerce' ),

        )
    )
);  
  echo '</div>';

}

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_guarantee_fields_save' );

function woo_add_guarantee_fields_save( $post_id ){ 

    $woocommerce_select = $_POST['guarantee_select'];
    if( !empty( $woocommerce_select ) )
        update_post_meta( $post_id, 'guarantee_select', esc_attr( $woocommerce_select ) );

}

// Order items: Save product "guarantee_field" as hidden order item meta data
add_action('woocommerce_checkout_create_order_line_item', 'woo_add_guarantee_fields_order', 50, 4);
function woo_add_guarantee_fields_order($item, $cart_item_key, $values, $order) {
    if ( $guarantee_field = $values['data']->get_meta('guarantee_select') ) {
        $item->update_meta_data( 'guarantee', $guarantee_field ); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...