#php #wordpress #woocommerce
Вопрос:
Я работаю над сайтом wordpress woocommerce. Я хочу,чтобы пользователь логики не мог видеть категорию продукта или подкатегорию или страницу продукта без входа в систему, он будет перенаправлен на страницу входа. Мой код ниже
add_action( 'template_redirect', 'wc_redirect_non_logged_to_login_access');
function wc_redirect_non_logged_to_login_access() {
if ( !is_user_logged_in() amp;amp; ( is_woocommerce() || is_shop() || is_cart() || is_checkout() ) ) {
wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id')) );
exit();
}
}
Но после входа в систему при переходе на страницу категории продукта он будет перенаправлен на страницу входа в систему. Я также проверил это с помощью отладки, страница категории продукта показывает, что вы не вошли в систему.Я не могу понять после входа в систему, когда вы переходите на страницу категории товаров, почему вы не вошли в систему?
Пожалуйста, помогите мне с возможными решениями.
Спасибо..
Комментарии:
1. Ваш код должен работать. Я проверил и работает на меня.
2. Он работает в локальном хосте, но не на сервере.
Ответ №1:
Возможно, проблема связана с woocommerce_myaccount_page_id
выбором.
Попробуйте получить его через slug (в случае, если страница slug-«моя учетная запись»):
add_action( 'template_redirect', 'wc_redirect_non_logged_to_login_access');
function wc_redirect_non_logged_to_login_access() {
if ( !is_user_logged_in() amp;amp; ( is_woocommerce() || is_shop() || is_cart() || is_checkout() ) ) {
wp_redirect( home_url( '/my-account/' ) );
exit();
}
}
или через идентификатор страницы «Моя учетная запись»:
add_action( 'template_redirect', 'wc_redirect_non_logged_to_login_access');
function wc_redirect_non_logged_to_login_access() {
if ( !is_user_logged_in() amp;amp; ( is_woocommerce() || is_shop() || is_cart() || is_checkout() ) ) {
$my_account_page_id = 2;
wp_redirect( get_page_link( $my_account_page_id ) );
exit();
}
}
Код был протестирован и работает. Добавьте его в свою активную тему functions.php.