add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'ocultar_terminos_variacion_impresion_para_distribuidores', 10, 1 );
function ocultar_terminos_variacion_impresion_para_distribuidores( $args ) {
// Asegúrate de que este código solo se ejecuta para usuarios con el rol de 'distribuidor'
if ( current_user_can( 'Distribuidor' ) ) {
// Comprueba si estamos tratando con el atributo 'impresion'
if ( isset( $args['attribute'] ) && 'pa_impresion' === $args['attribute'] ) {
// Obtiene los términos disponibles para el atributo 'impresion'
$terms = get_terms( 'pa_impresion', array('hide_empty' => false) );
// Filtra los términos para excluir todos excepto 'sin impresion'
$terms = array_filter( $terms, function( $term ) {
return 'sin-impresion' === $term->slug; // Asegúrate de que el slug de 'sin impresion' sea correcto
});
// Reinicia las opciones del atributo para incluir solo 'sin impresion'
$args['options'] = wp_list_pluck( $terms, 'slug' );
}
}
return $args;
}
add_filter('woocommerce_dropdown_variation_attribute_options_args', 'filter_variations_based_on_user_role', 10);
function filter_variations_based_on_user_role($args) {
$user = wp_get_current_user();
// Verifica si el atributo se llama 'impresion'
if ($args['attribute'] === 'pa_impresion') {
// pregunta si el rol de usuario es 'distribuidor'
if (in_array('Distribuidor', $user->roles)) {
// Obtiene los terminos de atributo de 'impresion'
$terms = get_terms('pa_impresion');
// Filtra el termino 'sin impresion'
$terms = array_filter($terms, function($term) {
return $term->slug === 'sin-impresion';
});
// Muestra unicamente el termino 'sin impresion'
$args['options'] = wp_list_pluck($terms, 'slug');
} else {
// Para otros usuarios elimina el termino 'sin impresion'
$key = array_search('sin-impresion', $args['options']);
if (false !== $key) {
unset($args['options'][$key]);
}
}
}
return $args;
}