Trick # 625 | Dieser Beitrag beinhaltet 0 Wörter. – Geschätzte Lesezeit: ca. 0 Minuten.
In unserem Memberbereich wollen wir WordPress-Inhalte im Voraus planen, aber diese Beiträge für eingeloggte Benutzer schon vor ihrer Veröffentlichung zugänglich machen. Standardmässig haben User mit höheren Rechten (z.B. Administratoren) immer Zugriff auf alle Inhalte. Damit das auch für tiefere Berechtigungen klappt (etwa für Abonnenten), braucht es eine Anpassung; diese lässt sich jedoch leicht umsetzen.
Fügen Sie dazu diesen Code in die functions.php-Datei Ihres Themes ein. Im Backend unter Design/Theme-Datei-Editor:
function allow_logged_in_users_to_view_future_posts($caps, $cap, $user_id, $args) {
// Prüfen, ob die Berechtigungsanfrage sich auf das Lesen eines Beitrags bezieht
if ('read_post' === $cap && !empty($args[0])) {
$post = get_post($args[0]); // Hole die Post-Daten
if ($post && 'future' === $post->post_status) { // Überprüfen, ob der Beitrag geplant ist
// Überprüfen, ob der Benutzer eingeloggt ist
if (is_user_logged_in()) {
$caps = ['read'];
} else {
$caps = ['do_not_allow']; // Verhindert den Zugriff für ausgeloggte Benutzer
}
}
}
return $caps;
}
add_filter('map_meta_cap', 'allow_logged_in_users_to_view_future_posts', 10, 4);Ab sofort können nun User, welche auf der Website eingeloggt sind, die geplanten, aber noch unveröffentlichten einsehen. Wer nicht eingeloggt ist, erhält keinen Zugriff. Sehr praktisch für die Exklusivität von Memberbereichen.
Werbung


