Как перенаправить незарегистрированных пользователей на определенную страницу?
16
Как перенаправить незарегистрированных пользователей, запрашивающих определенную страницу / URL, на другую страницу / URL и отобразить сообщение типа «только для членов». Я знаю, что его довольно легко кодировать с помощью функции! Is_user_logged_in (), но я не знаю, как его кодировать, потому что я новичок в WordPress. Позаботьтесь, чтобы сказать мне файл, чтобы поставить код также.
Вот 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;}}
Поместите это в файл функций вашей дочерней темы, измените идентификатор страницы или slug и URL перенаправления.
Спасибо за ответ, мне это понравилось, 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; } }но это не работает
if(!is_user_logged_in()){
auth_redirect();}// continue as normal for authenticated users
Это перенаправляет пользователя на страницу входа. После входа в систему пользователь перенаправляется обратно на защищенную страницу, к которой он первоначально пытался получить доступ.
Как мы можем сказать вам, где его поместить, если вы не сказали нам, что и где вы хотите отобразить? Целые посты? Страницы? Пользовательские части страниц? Извините ... Я думаю, мой хрустальный шар сегодня не совсем работает.
Так как вы, и я цитирую вас: «новичок в WordPress», вы должны скорее учиться, чем просить прямой ответ.
Что касается того, где вы должны прочитать ссылку 1 ссылку. Это скажет вам, какой файл вам нужно положить в.
Что касается того, как это сделать, вы должны сначала прочитать ссылки ссылки 2 и 3.
В целом это должно выглядеть примерно так:
if( is_user_logged_in()){
the_content();}else{
echo 'For members only';}
Конечно, приведенный выше код должен идти в цикле . Вы можете создать его так же сложно или просто, как вы хотите. Например, вместо простого текста, если вы не вошли в систему, вы можете отобразить целую форму регистрации, например, или - как я хотел бы предложить - разделенный экран, на котором пользователь может войти (так как пользователь может иметь учетную запись, но забыл войти) или зарегистрироваться. (если у него его нет).
На самом деле я не знаю, как работает WordPress, который возвращает запрошенный URL или постоянную ссылку. А что касается сообщения о сбое, оставьте его, я хочу просто перенаправить их, когда они запрашивают определенный URL без регистрации.
user3187719
я могу сделать это с $ pagenow?
user3187719
@ user3187719 отредактировал мой оригинальный ответ и добавил решение для перенаправления. PS. $pagenow? Вы пытаетесь убить муху с помощью пушки, она наверняка сработает, но почему так сложно? Будь проще. PS2: изучите PHP и WP Codex.
Борек
4
Вы не можете перенаправить на определенную страницу, но каждый не вошедший в систему пользователь будет перенаправлен на экран входа в систему.
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; } }
но это не работаетЭто было бы лучше:
Это перенаправляет пользователя на страницу входа. После входа в систему пользователь перенаправляется обратно на защищенную страницу, к которой он первоначально пытался получить доступ.
Документация здесь:
https://codex.wordpress.org/Function_Reference/auth_redirect
источник
Как мы можем сказать вам, где его поместить, если вы не сказали нам, что и где вы хотите отобразить? Целые посты? Страницы? Пользовательские части страниц? Извините ... Я думаю, мой хрустальный шар сегодня не совсем работает.
Так как вы, и я цитирую вас: «новичок в WordPress», вы должны скорее учиться, чем просить прямой ответ.
Что касается того, где вы должны прочитать ссылку 1 ссылку. Это скажет вам, какой файл вам нужно положить в.
Что касается того, как это сделать, вы должны сначала прочитать ссылки ссылки 2 и 3.
В целом это должно выглядеть примерно так:
Конечно, приведенный выше код должен идти в цикле . Вы можете создать его так же сложно или просто, как вы хотите. Например, вместо простого текста, если вы не вошли в систему, вы можете отобразить целую форму регистрации, например, или - как я хотел бы предложить - разделенный экран, на котором пользователь может войти (так как пользователь может иметь учетную запись, но забыл войти) или зарегистрироваться. (если у него его нет).
Добавлено после комментариев ниже:
Чтобы перенаправить использование
header
сwp_login_url
- снова, проверьте ссылки 1 и 2 ниже:Ссылка:
источник
$pagenow
? Вы пытаетесь убить муху с помощью пушки, она наверняка сработает, но почему так сложно? Будь проще. PS2: изучите PHP и WP Codex.Вы не можете перенаправить на определенную страницу, но каждый не вошедший в систему пользователь будет перенаправлен на экран входа в систему.
Wordpress Ссылка:
auth_redirect()
Просто упомянуть другое решение.
источник