I’ve already had this code on functions.php
This code is to add a new field on each product variation to have datetime input field, so variations would automatically expired when the current date is past the input date.
// Add Variation Settings add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 ); // Save Variation Settings add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 ); //Create New fields for Variations function variation_settings_fields( $loop, $variation_data, $variation ) { // Text Field woocommerce_wp_text_input( array( 'id' => '_text_field_date_expire[' . $variation->ID . ']', 'class' => '_text_field_date_expire', 'type' => 'datetime-local', 'label' => __( 'Date of Expiration', 'woocommerce' ), 'placeholder' => '', 'desc_tip' => 'true', 'description' => __( 'Expiration of Each Product Variation', 'woocommerce' ), 'value' => get_post_meta( $variation->ID, '_text_field_date_expire', true ) ) ); } //Save New Fields for Variation function save_variation_settings_fields( $post_id ) { // Text Field $text_field = $_POST['_text_field_date_expire'][ $post_id ]; if( ! empty( $text_field ) ) { update_post_meta( $post_id, '_text_field_date_expire', esc_attr( $text_field ) ); } }
This is to add a new field on each variation of Wocommerce.
What I am trying to do is to get each “_text_field_date_expire” meta so I could delete expired variation for each of the products..
How do I get each woocommerce variation ID on functions.php so I could add a rule that it will expire when it is already past the current date right now?
var_dump(get_post_meta( $variation_id , '_text_field_date_expire', true ));
This code is the one that I will use to get the datetime field, but not sure how I could get each $variation_id field?
Thanks!
Advertisement
Answer
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: