Сделать страницы WooCommerce доступными только для авторизованных пользователей
У меня есть сайт на WordPress и интернет-магазин на WooCommerce. Я хочу, чтобы мой магазин (и все его страницы) были видны только авторизованным пользователям.
Через плагин User Access Manager я запретил доступ к странице магазина, но при использовании прямой ссылки на товар и т.д., пользователь все равно может получить доступ к этой конкретной странице, даже если он не авторизован.
Как можно перенаправить неавторизованных пользователей на другую страницу, если они пытаются получить доступ к странице WooCommerce?

Поместите этот код в ваш файл functions.php
:
function wpse_131562_redirect() {
if (
! is_user_logged_in()
&& (is_woocommerce() || is_cart() || is_checkout())
) {
// следующую строку можно свободно изменить под ваши нужды
wp_redirect(home_url());
exit;
}
}
add_action('template_redirect', 'wpse_131562_redirect');
Что делает этот код?
Мы проверяем, хочет ли неавторизованный пользователь посмотреть страницу WooCommerce, и перенаправляем его на главную страницу сайта.

Спасибо за помощь. Файл functions.php находится в папке моей темы?? И как я могу вызвать эту функцию со страницы товара? Спасибо :-)

Огромное спасибо. Ваш код отлично работает у меня. Очень большое спасибо :)

Это не лучший метод для перенаправления на страницу Мой аккаунт
. Лучше получать постоянную ссылку страницы "Мой аккаунт", которую вы указали в настройках WooCommerce. Таким образом, если постоянная ссылка изменится или у вас мультиязычный сайт, ссылка всё равно будет корректно получена. Короче говоря: лучше не хардкодить постоянные ссылки/слаги (или URL в целом). Лучший метод будет: wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
