web-dev-qa-db-fra.com

Site réservé aux membres - la page mot de passe perdu doit toujours être accessible

Mon site nécessite une connexion avant de visualiser une page et cela fonctionne très bien:

function wpse_131562_redirect() {
if ( !is_user_logged_in() ) 
{auth_redirect();
}}
add_action('template_redirect', 'wpse_131562_redirect');

Mais évidemment, cela signifie que le lien vers la page de mot de passe perdu est redirigé vers la page de connexion. J'ai essayé de le changer pour:

function wpse_131562_redirect() {
if ( !is_user_logged_in() || (!ispage('lost-password') ))
{auth_redirect();
}}
add_action('template_redirect', 'wpse_131562_redirect');

Mais il a le même problème, et lorsque j’ai essayé d’utiliser wp_lostpassword_url, il s’est complètement cassé.

Comment puis-je restreindre l'accès à tout ce que la page de mot de passe perdu?

Merci

1
Lyall

Je crois que si votre déclaration est incorrecte, il devrait s'agir d'un AND (&&) pas OU

alors essayez

if ( ! is_user_logged_in() && ! is_page( 'lost-password' ) ) {

EDIT

Essayez d'utiliser $object = get_queried_object() pour vérifier le post slug

$object = get_queried_object();
if ( ! is_user_logged_in() && ( ! $object || 'my-account' !== $object->post_name ) ) {
  // ...

EDIT 2 Le slug de page était erroné, donc mis à jour dans le deuxième exemple.

2
jrmd