How to get Woocommerce Variation ID? How to get Woocommerce Variation ID? wordpress wordpress

How to get Woocommerce Variation ID?


Try this one:

$args = array(    'post_type'     => 'product_variation',    'post_status'   => array( 'private', 'publish' ),    'numberposts'   => -1,    'orderby'       => 'menu_order',    'order'         => 'asc',    'post_parent'   => get_the_ID() // get parent post-ID);$variations = get_posts( $args );foreach ( $variations as $variation ) {    // get variation ID    $variation_ID = $variation->ID;    // get variations meta    $product_variation = new WC_Product_Variation( $variation_ID );    // get variation featured image    $variation_image = $product_variation->get_image();    // get variation price    $variation_price = $product_variation->get_price_html();    get_post_meta( $variation_ID , '_text_field_date_expire', true );}

Hope this will helps you. For more information:


In WooCommerce 3+, it's $variation->get_id() from $variation function argument, which is an instance of the WC_Product_Variation.

The method get_id() is inherited from WC_Data class.

So in your code it should be instead:

'id' => '_text_field_date_expire[' . $variation->get_id() . ']',

Since WooCommerce 3, All WC_Product properties can't be accessed directly. Instead, you need to use the available methods.


Also in your hooked function save_variation_settings_fields() you are declaring 2 arguments, so there is one missing. It should be:

//Save New Fields for Variation// Save Variation Settingsadd_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );function save_variation_settings_fields( $variation_id, $i ) {    // Text Field    $text_field = $_POST['_text_field_date_expire'][ $variation_id ];    if( ! empty( $text_field ) ) {        update_post_meta( $variation_id, '_text_field_date_expire', esc_attr( $text_field ) );    }}

See the source code for woocommerce_save_product_variation action hook