Да. Если вы переопределите файл woocommerce/templates/single-product/add-to-cart/variable.php
, вы найдете код для выбора вариантов.
Там вы могли бы сделать что-то вроде:
Прежде всего, я всегда включать этот фрагмент кода при работе с ролями:
function user_has_role($role, $user_id = null) {
if (is_numeric($user_id))
$user = get_userdata($user_id);
else
$user = wp_get_current_user();
if (empty($user))
return false;
return in_array($role, (array) $user->roles);
}
Так он может быть использован как:
if(user_has_role("Aziende")){
//do stuff
}
сейчас имея эту функцию и зная, какой шаблон изменить, вы должны что-то сделать в этом файле. Это может быть по следующим образом:
// Get terms if this is a taxonomy - ordered
if (taxonomy_exists($name)) {
$terms = wc_get_product_terms($post->ID, $name, array('fields' => 'all'));
foreach ($terms as $term) {
if (! in_array($term->slug, $options)) {
continue;
}
if($name == 'pa_weight' && $term->slug != '1kg') { // or whatever your attribute is called, and whatever the attribute term is called.
if(!user_has_role('aziende'){
continue;
}
}
echo '<option value="' . esc_attr($term->slug) . '" ' . selected(sanitize_title($selected_value), sanitize_title($term->slug), false) . '>' . apply_filters('woocommerce_variation_option_name', $term->name) . '</option>';
}
} else {
foreach ($options as $option) {
if($name == 'pa_weight' && $option != '1kg') { // or whatever your attribute is called, and whatever the attribute term is called.
if(!user_has_role('aziende'){
continue;
}
}
echo '<option value="' . esc_attr(sanitize_title($option)) . '" ' . selected(sanitize_title($selected_value), sanitize_title($option), false) . '>' . esc_html(apply_filters('woocommerce_variation_option_name', $option)) . '</option>';
}
}
Этот код не испытано, поэтому я не знаю, если это работает. Но он должен дать вам указатель в правильном направлении.