Как перенаправить не авторизованных пользователей на определенную страницу?
4 ответ
- голосов
-
- 2014-01-31
Вот 2 примера,которые вам нужно будет немного изменить,чтобы заставить его работать для ваших конкретных нужд.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
Поместите это в файл функций дочерней темы,измените идентификатор страницы или ярлык и URL-адрес перенаправления.
Вы также можете использовать такой код:
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
Вы можете добавить сообщение прямо на страницу или,если вы хотите отображать сообщение для всех не вошедших в систему пользователей, добавить его в код .
Here are 2 examples which you will need to modify slightly to get it working for your specific needs.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
Put this in your child theme functions file, change the page ID or slug and the redirect url.
You could also use code like this:
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
You can add the message directly to the page or if you want to display the message for all non logged in users, add it to the code.
-
Спасибо за ответ. Мне понравился этот `add_action ('template_redirect','redirect_to_specific_page'); function redirect_to_specific_page () { if (is_page ('http://mydomain.com/participate') &&!is_user_logged_in ()) { wp_redirect ('http://mydomain.com/login',301); Выход; } } `Но это не работаетThanks for you answer I did like this `add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }` But its not working
- 0
- 2014-01-31
- user3187719
-
Используйте страницуi.d или slug здесь,а не URL-адрес http://mydomain.com/participate http://codex.wordpress.org/Conditional_TagsUse the page i.d or slug here, not the url http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags
- 0
- 2014-01-31
- Brad Dalton
-
is_page ('участвовать')is_page('participate')
- 0
- 2014-01-31
- Brad Dalton
-
- 2017-11-17
Так было бы лучше:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
Это перенаправляет пользователя на страницу входа.После входа в систему пользователь перенаправляется обратно на защищенную страницу,к которой он пытался получить доступ изначально.
Документация здесь:
https://codex.wordpress.org/Function_Reference/auth_redirect
This would be better:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
What this does is redirect the user to the login page. Once logged in, the user is redirected back to the secure page they were trying to access initially.
Documentation here:
https://codex.wordpress.org/Function_Reference/auth_redirect
-
- 2014-01-30
Как мы можем сказать вам,где его разместить,если вы не сказали нам,что и где вы хотите разместить? Целые сообщения? Страницы? Пользовательские части страниц? Извините ... Мне кажется,мой хрустальный шар сегодня не совсем работает.
Поскольку вы,и я цитирую вас: "новичок в WordPress",вам лучше учиться,чем просить прямого ответа.
Что касается где ,вы должны прочитать ссылку 1 ссылка. Это скажет вам,в какой файл вам нужно его вставить.
Что касается того, как это сделать,вам сначала следует прочитать ссылки 2 и 3.
В целом это должно выглядеть примерно так:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Конечно,приведенный выше код должен войти в цикл . Вы можете создать его настолько сложным или простым,насколько захотите. Например,вместо простого текста,если вы не вошли в систему,вы можете отобразить,например,всю форму регистрации или - как я бы предложил - разделенный экран,на котором пользователь может войти в систему (поскольку пользователь может иметь учетную запись,но забыл войти в систему) или зарегистрироваться (если его нет).
Добавлено после комментариев ниже:
Для перенаправления используйте
header
сwp_login_url
- снова проверьте ссылки 1 и 2 ниже:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Ссылка:
How can we tell you where to put it if you didn't tell us what and where you want to display it? Whole posts? Pages? Custom parts of pages? Sorry... I guess my crystal ball isn't quite working today.
Since you are, and I quote you: "a newbie to wordpress" you should rather learn, than to ask for direct answer.
As for where you should read the reference 1 link. This will tell you which file you need to put it in.
As for how to do it you should first read reference link 2 and 3.
Overall it should look something like this:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Of course the above code needs to go into a loop. You can build it up as complex or as simple as you want. For example instead of simple text if not logged in you can display whole sign up form for example or - as I would suggest - a divided screen where user can log in (since user can have an account but forgot to sign in) or sign up (if he doesn't have one).
Added after comments below:
To redirect use
header
with thewp_login_url
- again, check references 1 and 2 below:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Reference:
-
На самом деле я не знаю функции wordpress,которая возвращает запрошенный URL или постоянную ссылку.А что касается сообщения об отображении,оставьте его,я просто хочу перенаправить их,когда они запрашивают определенный URL без регистрации.Actually i don't know the funtction on wordpress that returns the requested URL or permalink. And about the dispaly message, leave it, I want to just want to redirect them when they request for certain URL without being logged.
- 0
- 2014-01-31
- user3187719
-
я могу сделать это с помощью $pagenow?can I do it with $pagenow?
- 0
- 2014-01-31
- user3187719
-
@ user3187719 отредактировал мой исходный ответ и добавил решение для перенаправления.PS.`$pagenow`?Вы пытаетесь убить муху из пушки,уверен,что это сработает,но почему так сложно?Будь проще.PS2: изучите PHP и WP Codex.@user3187719 edited my original answer and added the solution to redirect. PS. `$pagenow`? You are trying to kill a fly with a cannon sure it will work, but why so complex? Keep it simple. PS2: Learn PHP and WP Codex.
- 0
- 2014-01-31
- Borek
-
- 2014-12-13
Вы не можете перенаправить на определенную страницу,но каждый пользователь,не вошедший в систему,будет перенаправлен на экран входа в систему.
<?php auth_redirect(); ?>
Справочник по Wordpress:
auth_redirect()
Просто упомяну еще одно решение.
You can't redirect to a specific page, but every non-logged-in user will be redirected to Log-In Screen.
<?php auth_redirect(); ?>
Wordpress Reference:
auth_redirect()
Just to mention another solution.
Как перенаправить незарегистрированных пользователей,запрашивающих определенную страницу/URL,на другую страницу/URL и отобразить сообщение типа «только для участников».Я знаю,что с помощью функции! Is_user_logged_in () довольно просто кодировать,но я не знаю,как это делать,потому что я новичок в WordPress.Скажите,пожалуйста,файл,в котором тоже нужно разместить код.