Иногда, особенно при массовой загрузке товаров из 1с или МойСклад бывает необходимость отключить определенные атрибуты от использования в вариациях. Тогда на помощь приходит следующий код:
function tt_disable_attributes_as_variations() {
$product_ids = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'post_status' => 'any',
'fields' => 'ids',
));
// add the rest of attributes you want
$attributes_to_update = array('pa_num', 'pa_color');
foreach ($product_ids as $product_id) {
$product_attributes = get_post_meta($product_id, '_product_attributes', true);
foreach ($attributes_to_update as $attribute_slug) {
if (isset($product_attributes[$attribute_slug])) {
//Disable showing on product page
// $product_attributes[$attribute_slug]['is_visible'] = 0;
//Disable being used as variation
$product_attributes[$attribute_slug]['is_variation'] = 0;
}
}
update_post_meta($product_id, '_product_attributes', $product_attributes);
}
}
add_action('init', 'tt_disable_attributes_as_variations');