Как создать пользовательскую страницу входа для клиентов на определенную страницу

3 авг. 2013 г., 06:35:21
Просмотры: 13.5K
Голосов: 1

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

Я пробовал использовать Theme my login, но не получил желаемого решения. Также пробовал создать собственную область виджетов и защитить страницу паролем. Возникли следующие проблемы:

  1. Как получить и санировать пользовательский ввод - пробовал использовать методы WordPress esc_attr, esc_js, esc_html [Достаточно ли этого?]
    1. Перенаправлял на защищенную страницу, но пароль не срабатывал для входа.
    2. После входа на защищенную страницу выход из системы не происходил даже после очистки кэша и куки.

По сути, мне нужно решение этих проблем. Спасибо.

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

Вот отличная статья, в которой объясняется одно из решений, которое я лично использовал для подобных задач: http://justintadlock.com/archives/2012/10/16/how-i-run-a-membership-site

В вашем случае вам нужно адаптировать функцию th3_club_member_template, например так:

add_filter( 'template_redirect', 'nifty_log_in_check', 99 );

function nifty_log_in_check( $template ) {

    if ( is_page('clients_only' ) ) && !current_user_can( 'view_client_content' ) ) // измените это под свои нужды
    {
        wp_redirect( home_url() );
        exit();
    }
}

Затем вы можете использовать плагин Theme My Login для настройки формы входа.

После входа пользователя вы можете либо перенаправить его вручную, либо использовать плагин типа Peters Login Redirect

Для ручного перенаправления можно сделать так:

function nifty_login_redirect( $redirect_to, $request, $user ){
    // есть ли пользователь для проверки?
    global $user;
    if( isset( $user->roles ) && is_array( $user->roles ) ) {
        // проверяем для администраторов
        if( in_array( "administrator", $user->roles ) ) {
            // перенаправляем в стандартное место
            return $redirect_to;
        } else {
            return home_url().'/client-area'; // измените это
        }
    }
    else {
        return $redirect_to;
    }
}
add_filter("login_redirect", "nifty_login_redirect", 10, 3);

[Кодекс]

3 авг. 2013 г. 07:52:02
0

Наша компания использует WP-Client — это плагин, который позволяет создавать клиентские порталы... вы можете создать отдельный портал для каждого клиента и управлять тем, что они видят при входе в систему.

Вы даже можете настроить страницу входа... плагин достаточно прост в настройке, а техническая поддержка работает отлично.

Вот сайт: http://wp-client.com

1 янв. 2014 г. 18:55:33