Отображение регистрации, необходимой для пользователей, не вошедших в систему, для продуктов в нескольких категориях. Woocommerce

Хорошо, я боролся с этим некоторое время и не уверен, буду ли я ходить кругами. Чтобы подвести итог проблемы, я пытаюсь достичь следующего сценария. Пользователи могут просматривать любой товар как на странице магазина, так и на странице отдельного товара, однако, если они не зарегистрированы на сайте, кнопка "Добавить в корзину" должна быть заменена на "Зарегистрировать в магазине и на странице отдельного товара", если товар относится к определенным категориям. Таким образом, эффективно это будет применяться только к зарегистрированным пользователям, которые заинтересованы в определенных "ограниченных" продуктах, которые находятся в категории.

У меня есть следующее, что позволяет добавить пользовательский класс на страницу добавления в корзину и архивирования страниц. Это фактически создаст всплывающее окно, предлагающее пользователям зарегистрироваться, а не добавлять товар в корзину. Как мне заставить это работать на отдельной странице продукта? (Без необходимости добавления отдельных идентификаторов категорий)

// Replacing add-to-cart button in shop pages and archives pages (for non logged in users)
add_filter( 'woocommerce_loop_add_to_cart_link', 'conditionally_replacing_add_to_cart_button', 10, 2 );
function conditionally_replacing_add_to_cart_button( $button, $product  ) {

$categories = array('peak-caps','hoodies');
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// For 'Restricted Products' product category
if( ( ! is_user_logged_in() ) && has_term( $categories, 'product_cat', $product_id ) ){
    $link = '#register';
    $button_text = __("Register", "woocommerce");
    $button = '<a href="'.$link.'" button alt add_to_cart_button eluidaa2988e4" id="eluidaa2988e4" data-lightbox="inline" itemprop="url" >' . $button_text . '</a>';
}
return $button;
}

0 ответов

Другие вопросы по тегам