webentwicklung-frage-antwort-db.com.de

Wie kann ich den Seitenzugriff auf angemeldete Benutzer beschränken?

Bestimmte Seiten auf einer Client-Site sind vertraulich und ich muss den Zugriff auf angemeldete Benutzer beschränken. Ich habe mir verschiedene Mitgliedschafts-Plugins angeschaut, aber sie sind für meine ganz grundlegenden und spezifischen Bedürfnisse übertrieben.

Ich habe dieses Snippet gefunden, das ich in functions.php getestet habe

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();
}
} 

Als ich diesen Code getestet habe, hat er einen bestimmten Blog-Post genau so eingeschränkt, wie ich es will. (Wenn der Benutzer auf einen Link zu einer eingeschränkten Seite klickt, aber nicht angemeldet ist, wird er auf eine Anmeldeseite umgeleitet. Nach Abschluss der Anmeldung sollten sie jedoch auf die EXAKTE Originalseite zurückgeleitet werden.)

Jetzt muss ich diesen Code so ändern, dass er Folgendes bewirkt:

Schränken Sie alle Seiten mit einem bestimmten übergeordneten Element ein.

Ist das möglich? Wie sollte der Code geändert werden, um dieses Ergebnis zu erzielen?

Vielen Dank

1
Naomi E

Wie wäre es damit?

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();
  }
}

Weitere Informationen zu post_parent und anderen bedingten Tags finden Sie hier: https://codex.wordpress.org/Conditional_Tags

2
Sam Schneider