2016-12-25 3 views
2

Мне нравится проверять, доступен ли текущий пользователь для его чтения. затем откройте специальную страницу.Как перенаправить после входа на страницу в WordPress?

Другим словом я хочу перенаправить после входа на конкретную страницу в WordPress и ограничить доступ других пользователей.

+0

Проверьте это https://stackoverflow.com/questions/4267285/redirect-user-after-first-login-in-wordpress?rq=1 – EniGma

ответ

2

Пользователь Конкретное содержание является отличный плагин, который плавно позволяет определить индивидуальные или группы пользователей, от роли или имя пользователя, и предоставить им доступ к конкретным содержанием.

Update: Вы можете использовать Питер Войти Перенаправление Определить набор правил перенаправления для конкретных пользователей, пользователей с определенными ролями, пользователей с определенными возможностями, и правил одеяло для всех остальных пользователей. Кроме того, установите URL-адрес переадресации для последующей регистрации.

2

According to This article

Перенаправление пользователей на первом входе в WordPress

На основе членства WordPress сайтов и других сайтов, где вы хотите, чтобы отобразить специальное приветствие или инструкции для новых пользователей, вы можете реализовать некоторые пользовательский интерфейс для переадресации. Эта функция будет срабатывать только один раз (или для первых нескольких логинов) для каждого пользователя.

Важными элементами кодовой стороны для такой функциональности являются использование встроенного фильтра WordPress «login_redirect» и сохранение информации о том, получил ли пользователь «первый вход». Существует несколько возможных подходов к хранению информации либо в файле cookie, либо в метаинформации пользователя (хранящейся в базе данных WordPress в таблице «wp_usermeta»).

Вот некоторые примеры кода можно использовать в файле functions.php вашей темы или плагина:

раствора Cookie на основе

// Send new users to a special page 
function redirectOnFirstLogin($redirect_to, $requested_redirect_to, $user) 
{ 
    // URL to redirect to 
    $redirect_url = 'http://yoursite.com/firstloginpage'; 
    // How many times to redirect the user 
    $num_redirects = 1; 
    // Cookie-based solution: captures users who registered within the last n hours 
    // The reason to set it as "last n hours" is so that if a user clears their cookies or logs in with a different browser, 
    // they don't get this same redirect treatment long after they're already a registered user 
    // 172800 seconds = 48 hours 
    $message_period = 172800; 

    // If they're on the login page, don't do anything 
    if(!isset($user->user_login)) 
    { 
     return $redirect_to; 
    } 

    $key_name = 'redirect_on_first_login_' . $user->ID; 

    if(strtotime($user->user_registered) > (time() - $message_period) 
     && (!isset($_COOKIE[$key_name]) || intval($_COOKIE[$key_name]) < $num_redirects) 
    ) 
    { 
     if(isset($_COOKIE[$key_name])) 
     { 
      $num_redirects = intval($_COOKIE[$key_name]) + 1; 
     } 
     setcookie($key_name, $num_redirects, time() + $message_period, COOKIEPATH, COOKIE_DOMAIN); 
     return $redirect_url; 
    } 
    else 
    { 
     return $redirect_to; 
    } 
} 

add_filter('login_redirect', 'redirectOnFirstLogin', 10, 3); 

Download the cookie-based redirect on first login plugin

Решение, основанное на мета-таблице пользователя

// Send new users to a special page 
function redirectOnFirstLogin($redirect_to, $requested_redirect_to, $user) 
{ 
    // URL to redirect to 
    $redirect_url = 'http://yoursite.com/firstloginpage'; 
    // How many times to redirect the user 
    $num_redirects = 1; 
    // If implementing this on an existing site, this is here so that existing users don't suddenly get the "first login" treatment 
    // On a new site, you might remove this setting and the associated check 
    // Alternative approach: run a script to assign the "already redirected" property to all existing users 
    // Alternative approach: use a date-based check so that all registered users before a certain date are ignored 
    // 172800 seconds = 48 hours 
    $message_period = 172800; 

    // If they're on the login page, don't do anything 
    if(!isset($user->user_login)) 
    { 
     return $redirect_to; 
    } 

    $key_name = 'redirect_on_first_login'; 
    // Third parameter ensures that the result is a string 
    $current_redirect_value = get_user_meta($user->ID, $key_name, true); 
    if(strtotime($user->user_registered) > (time() - $message_period) 
     && ('' == $current_redirect_value || intval($current_redirect_value) < $num_redirects) 
    ) 
    { 
     if('' != $current_redirect_value) 
     { 
      $num_redirects = intval($current_redirect_value) + 1; 
     } 
     update_user_meta($user->ID, $key_name, $num_redirects); 
     return $redirect_url; 
    } 
    else 
    { 
     return $redirect_to; 
    } 
} 

add_filter('login_redirect', 'redirectOnFirstLogin', 10, 3); 

Download the user-meta based redirect on first login plugin

+1

Большое вам спасибо за вашу помощь. Я очень ценю это. Как назначить одну страницу пользователю, в руководстве. –

+1

Я хочу создавать личные страницы для каждого пользователя. Содержимое этой страницы доступно на интерфейсе только владельцем страницы после того, как он вошел в систему. –

+0

Лучше использовать плагины, чем вы сами. Проверьте эту ссылку: https://wploop.com/specify-users-name-role-show-exclusive-content/ – EniGma

Смежные вопросы