2017-02-01 1 views
0

Есть 860 продуктов с различными вариантами. Задача состоит в том, чтобы разрешить массовое редактирование пользователем «используется для вариантов» для некоторых атрибутов. Например, у нас есть размер, пол, который все еще необходим для вариаций, но у нас есть материал, который необходим только для фильтров, поэтому удаление этого атрибута не является решением.«Используется для вариаций» программный программный

ответ

0

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

function so_41978670_run_once(){ 
    $args = array(
     'post_type' => 'product', 
     'posts_per_page' => -1 
     'tax_query' => array(
      array(
       'taxonomy' => 'post_type', 
       'field' => 'slug', 
       'terms' => 'variable', 
      ), 
     ), 
    ); 
    $products = new WP_Query($args); 
    if($products->have_posts()){ 
     while ($products->have_posts()) { 
      $products->the_post(); 
      $product_id = get_the_ID(); 
      $product = wc_get_product($product_id); 

      $attributes = $product->get_attributes(); 
      $meta_values = array(); 

      if ($attributes) { 
       foreach ($attributes as $attribute_key => $attribute) { 

        if(in_array($attribute_key, array('size', 'gender'))){ 
         // Modify the attributes meta. 
         $attributes[ $attribute_key ]['is_variation'] = 1; 
        } 
       } 
      } 
      update_post_meta($product->get_id(), '_product_attributes', $attributes); 

     } 
     wp_reset_postdata(); 
    } 
}