2015-04-21 5 views
0

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

В основном, что я делаю, я пытаюсь получить значение запаса каждой вариации, а если значение запаса меньше нуля, то я обновляю определенное поле с определенными значениями (как указано в моем коде ниже).

Я проверил это, введя вручную любой пользовательский идентификатор сообщения/изменения и работает нормально, обновляет этот конкретный идентификатор изменения на основе его стоимости акций. Все, что я застрял здесь, я не могу самостоятельно получить идентификатор варианта.

Ниже приведен код, который я использую:

global $post, $woocommerce; 
$post_id = $variation->ID; 

// Get specific data from the certain custom fields using get_post_meta($post_id, $key, $single); 
$stock = get_post_meta($post_id, '_stock', true); 

if ($stock < 1) { 
    update_post_meta($post_id, 'cuzd-prod-general-v', '20,25'); 
} else { 
    update_post_meta($post_id, 'cuzd-prod-general-v', '1,5'); 
} 

Я не знаю, где я не прав, чтобы получить вариации идентификаторов для этого.

ответ

0

я был в состоянии решить эту проблему, используя ниже код меняется:

// Values to be updated 
    $in_stock = '1,5'; 
    $out_of_stock = '20,30'; 

// Get variations   
    $args = array(
       'post_type'  => 'product_variation', 
       'post_status' => array('private', 'publish'), 
       'numberposts' => -1, 
       'orderby'  => 'menu_order', 
       'order'   => 'asc', 
       'post_parent' => $post->ID 
      ); 
      $variations = get_posts($args); 

    foreach ($variations as $variation) { 

       $variation_id   = absint($variation->ID);$variable_id = $this['variation_id']; 
       $variation_post_status = esc_attr($variation->post_status); 
       $variation_data   = get_post_meta($variation_id); 
       $variation_data['variation_post_id'] = $variation_id; 


    // Get specific data from the certain custom fields using get_post_meta($post_id, $key, $single); 
    $stock = get_post_meta($variation_data['variation_post_id'], '_stock', true); 


    if ($stock < 1) { 
     update_post_meta($variation_data['variation_post_id'], 'cuzd-prod-general-v', $out_of_stock); 
     } else { 
      update_post_meta($variation_data['variation_post_id'], 'cuzd-prod-general-v', $in_stock); 
      } 
    }