Página privada protegida com nome de usuário e senha

Estamos criando um site WordPress onde uma das páginas precisa ser acessada via nome de usuário e senha.

Eu sei que posso criar uma página “Privada”, onde o usuário pode inserir uma senha para visualizar. No entanto, o nosso cliente nos pediu a capacidade de criar combinações únicas de nome de usuário / senha para esta página em particular. Por isso, eu também gostaria de criar a capacidade de redefinir uma senha esquecida.

Eu pesquisei on-line, mas não encontrei soluções viáveis. Eu estou pensando se há uma melhor prática no lugar para isso. Estou pensando que talvez criemos uma nova function de usuário e esconda o painel do WordPress para esse tipo de usuário? Estou no caminho certo? Qualquer experiência será muito apreciada.

Solutions Collecting From Web of "Página privada protegida com nome de usuário e senha"

Então, aqui está o que estamos tentando fazer:

Se um usuário fizer logon e é de uma function específica (Assinante), redirecione-os para uma página específica.

Se um usuário tentar acessar o painel de administração, redirecione-os para uma página específica.

Nós vamos usar 3 ganchos para os problemas acima:

  • login_redirect – Redirecionar usuário uma vez que eles façam login
  • after_setup_theme – Remove admin bar
  • admin_init – Mantém os assinantes fora do painel de administração

Primeiro, vamos criar o nosso redirecionamento:

/** * Redirect subscribers to specific page * @param string $redirect * @param string $request * return string */ function member_redirect( $redirect, $request ) { if( current_user_can( 'subscriber' ) ) { return $specific_page } return $redirect; } add_filter( 'login_redirect', 'member_redirect', 10, 2 ); 

Se o usuário atual for um assinante, replaceia a página $specific_page com o URL da página, de qualquer forma, deixe-os ir para onde eles foram originalmente encaminhados.

Em seguida, vamos nos certificar de que os assinantes não podem acessar o painel de administração:

 /** * If user is subscriber AND trying to access admin panel, redirect them to specific page */ function subs_adminpanel_redirect(){ if ( current_user_can( 'subscriber' ) ){ wp_redirect( $specific_page ); exit; } } add_action( 'admin_init', 'subs_adminpanel_redirect' ); 

Mais uma vez, você pode replace $specific_page por seu URL real.

Finalmente, vamos remover a barra de administração para que o usuário nem sequer saiba que há um painel de controle.

 /** * Remove adminbar for Subscribers */ function subs_remove_adminbar() { if( ! current_user_can( 'subscriber' ) ) { add_filter( 'show_admin_bar', '__return_false' ); } } add_action( 'after_setup_theme', 'subs_remove_adminbar' ); 

Isso é bastante simples, se eles são um assinante, remova a barra de administração para eles.

Um passo shackleton apontado nos comentários abaixo é por padrão, os assinantes não têm access para ver páginas privadas. Precisamos adicionar isso como uma capacidade:

 /** * Allow Subscribers to view Private Pages */ function add_theme_caps() { $role = get_role( 'subscriber' ); $role->add_cap( 'read_private_pages' ); } add_action( 'admin_init', 'add_theme_caps' ); 

Você jogaria tudo isso em seu arquivo functions.php em algum lugar e testá-lo. Mais uma vez, isso só funciona para assinantes e somente se você replace $specific_page com o URL da página real.