web-dev-qa-db-fra.com

Comment limiter l'accès aux pages aux utilisateurs connectés?

Certaines pages d'un site client sont confidentielles et je dois limiter l'accès aux utilisateurs connectés. J'ai consulté divers plugins d'adhésion, mais ils sont excessifs pour mes besoins très fondamentaux et spécifiques.

J'ai trouvé cet extrait que j'ai testé dans functions.php

function my_force_login() {
global $post;

if (!is_single()) return;

$ids = array(188); // array of post IDs that force login to read

if (in_array((int)$post->ID, $ids) && !is_user_logged_in()) {
auth_redirect();
}
} 

Lorsque j'ai testé ce code, il a restreint EXACTEMENT la manière dont je le souhaite d'un article de blog particulier. (La clé ici est que si l'utilisateur clique sur un lien vers une page restreinte mais n'est pas connecté, il est redirigé vers une page de connexion, mais une fois la connexion terminée, il doit être redirigé vers la page d'origine EXACT.)

Maintenant, j'ai besoin de modifier ce code pour qu'il procède comme suit:

Restreindre toutes les pages avec un parent particulier.

Est-ce possible? Comment le code devrait-il être modifié pour atteindre ce résultat?

Merci

1
Naomi E

Que dis-tu de ça?

function my_force_login() {
  global $post;

  if (!is_single()) return;

  $restricted_parent_id = 1 // Whatever id you are targeting.

  if ($post->post_parent == $restricted_parent_id && !is_user_logged_in()) {
    auth_redirect();
  }
}

Plus d'informations sur post_parent et d'autres tags conditionnels ici: https://codex.wordpress.org/Conditional_Tags

2
Sam Schneider