Сделать страницы WooCommerce доступными только для авторизованных пользователей

29 янв. 2014 г., 00:05:41
Просмотры: 37.2K
Голосов: 13

У меня есть сайт на WordPress и интернет-магазин на WooCommerce. Я хочу, чтобы мой магазин (и все его страницы) были видны только авторизованным пользователям.

Через плагин User Access Manager я запретил доступ к странице магазина, но при использовании прямой ссылки на товар и т.д., пользователь все равно может получить доступ к этой конкретной странице, даже если он не авторизован.

Как можно перенаправить неавторизованных пользователей на другую страницу, если они пытаются получить доступ к странице WooCommerce?

0
Все ответы на вопрос 3
3
28

Поместите этот код в ваш файл 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, и перенаправляем его на главную страницу сайта.

29 янв. 2014 г. 00:13:23
Комментарии

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

Alessandro Alessandro
29 янв. 2014 г. 10:30:46

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

Alessandro Alessandro
29 янв. 2014 г. 11:45:59

Убедитесь, что вы не устанавливаете ни одну из страниц WooCommerce в качестве главной страницы, потому что тогда сайт перестанет работать.

SPRBRN SPRBRN
13 нояб. 2017 г. 11:23:57
2
10

Я только что изменил перенаправление на

wp_redirect( site_url('my-account/') )

теперь пользователи будут перенаправляться на страницу "Мой аккаунт", если они не авторизованы или не зарегистрированы.

18 нояб. 2015 г. 13:28:39
Комментарии

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

Rens Tillmann Rens Tillmann
2 мар. 2018 г. 21:25:29

в вашем коде пропущена ; в конце

user889030 user889030
6 февр. 2019 г. 20:52:46
1

Я бы изменил на это

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

вместо

wp_redirect( site_url('my-account/') );
5 февр. 2020 г. 09:30:07
Комментарии

Не могли бы вы подробнее объяснить, почему это поможет, чтобы другие люди могли извлечь пользу из вашего ответа?

Krzysiek Dróżdż Krzysiek Dróżdż
5 февр. 2020 г. 10:11:55