В интернет-магазинах на WordPress с WooCommerce часто возникает задача ограничить доступ к определённым страницам, например, к корзине, оформлению заказа или личному кабинету, только для авторизованных пользователей. Это позволяет защитить контент, стимулировать регистрацию и повысить безопасность магазина. В этой статье мы подробно разберём, как реализовать запрет доступа для гостей, используя как готовые плагины, так и собственные функции на PHP.
Почему важно ограничить доступ к страницам WooCommerce
WooCommerce по умолчанию открывает страницы магазина для всех пользователей, включая гостей. Однако бывают ситуации, когда нужно:
- Скрыть цены и товары для неавторизованных посетителей;
- Запретить оформление заказа без регистрации;
- Сделать личный кабинет видимым только для залогиненных;
- Защитить пользовательские данные и историю заказов.
Реализация этих ограничений улучшает пользовательский опыт и способствует росту базы зарегистрированных клиентов.
Ограничение доступа с помощью плагинов
Плагин "Restrict User Access"
Один из простых и удобных способов — использовать плагин Restrict User Access. Он позволяет гибко настраивать уровни доступа к страницам и типам записей.
После установки плагина создайте правило доступа, в котором укажите, что страницы корзины и оформления заказа доступны только зарегистрированным пользователям.
Плагин "WooCommerce Members Only"
Этот плагин специально разработан для WooCommerce и позволяет скрывать товары и страницы магазина для гостей. Он платный, но предлагает расширенные возможности, включая:
- Скрытие товаров и категорий;
- Перенаправление гостей на страницу входа;
- Настройку сообщений для неавторизованных пользователей.
Реализация запрета доступа через код в functions.php
Если вы предпочитаете решение без плагинов, можно добавить следующий код в файл functions.php вашей темы или в плагин-сниппет. Этот код перенаправит гостей с критичных страниц WooCommerce на страницу входа.
function wpstock_restrict_woocommerce_pages() {
if ( is_admin() ) {
return; // Не ограничиваем админку
}
// Страницы WooCommerce, доступ к которым нужно ограничить
$restricted_pages = array(
wc_get_page_id('cart'),
wc_get_page_id('checkout'),
wc_get_page_id('myaccount'),
);
if ( is_page($restricted_pages) && !is_user_logged_in() ) {
wp_redirect( wp_login_url( get_permalink() ) );
exit;
}
}
add_action('template_redirect', 'wpstock_restrict_woocommerce_pages');Объяснение кода:
- Проверяем, что пользователь не в админке;
- Определяем ID страниц корзины, оформления заказа и личного кабинета;
- Если посетитель пытается открыть эти страницы без авторизации — перенаправляем на страницу входа с возвратом обратно после логина.
Расширение функционала: вывод сообщения гостям
Можно дополнительно вывести сообщение на странице входа, уведомляя пользователя о необходимости авторизации для доступа к магазину.
function wpstock_login_message_custom() {
if ( isset($_GET['redirect_to']) ) {
echo '<p style="color:#d9534f;">Для доступа к корзине и оформлению заказа, пожалуйста, войдите в аккаунт.</p>';
}
}
add_action('login_message', 'wpstock_login_message_custom');Как скрыть цены и кнопки добавления в корзину для гостей
Иногда требуется не просто ограничить страницы, а полностью скрыть цены и кнопки покупки для неавторизованных пользователей. Для этого можно использовать следующий код:
function wpstock_hide_price_add_to_cart() {
if ( !is_user_logged_in() ) {
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
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);
}
}
add_action('wp', 'wpstock_hide_price_add_to_cart');Этот код убирает вывод цены и кнопок на страницах магазина и карточках товара для гостей, подталкивая их к регистрации.
Рекомендации по плагинам с WPSHOP
Для комплексной работы с WooCommerce и управлением доступом можно использовать плагины из каталога WPSHOP. Среди них есть решения для защиты контента и управления пользователями, которые дополнят вашу реализацию.
Выводы и лучшие практики
Ограничение доступа к страницам WooCommerce для гостей — важная задача для многих магазинов. Правильное сочетание готовых плагинов и кастомных функций позволяет добиться точного контроля и удобства для пользователей. Обязательно тестируйте изменения на рабочем сайте и учитывайте UX, чтобы не отпугнуть потенциальных клиентов.