Привет.
Итоговая реализация потребует кастомизации под задачу, но оттолкнуться можно от этого.
Выводим ссылку на загрузку файла в карточке товара:
add_action('woocommerce_product_meta_end', 'download_products');
function download_products() {
global $product;
$files = $product->get_files();
if ( !empty($files) && current_user_can( 'vipuser' ) && has_term( 'vipaccess', 'product_cat' ) ) {
foreach( $files as $key => $each_download ) {
echo '<p><a href="' . $each_download['file'] . '" download>Скачать файл <!--'. $each_download['name'].'--></a></p>';
}
}
}
Убираем из карточки товара цену, количество и кнопку добавления товара в корзину:
add_action('init', 'remove_add2cart_for_vip_users');
function remove_add2cart_for_vip_users(){
if ( is_user_logged_in() && current_user_can( 'vipuser' ) ) {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
}
Из очевидного: а) делать такое на базе Вукоммерс своими силами — затея довольно сомнительная из-за самого Вукоммерса; б) проще/лучше воспользоваться готовыми плагинами; в) если всё же хочется написать эту функциональность самому, то надо более основательно продумывать логику, потому что тут легко перемудрить или, наоборот, не доглядеть что-то с ролями/правами/доступами.