Beschränken Sie die Anzeige von Beiträgen nach Kategorie, Benutzerrolle

Diese Antwort hier ist fast genau das, wonach ich suche, aber ich habe nur Schwierigkeiten damit, dass es für mich funktioniert.

Im Grunde habe ich eine Reihe von benutzerdefinierten Benutzerrollen mit add_role() und register_activation_hook() . Ich möchte dann in der Lage sein, Benutzer auf bestimmte Inhalte basierend auf diesen Benutzerrollen zu beschränken. Sie dürfen überhaupt nicht bearbeiten.

Zu diesem Zeitpunkt habe ich den Code aus dieser Antwort einfach in meine functions.php kopiert und mit meinen Kategorien bearbeitet. So sieht es also aus:

 add_filter('template_include', 'restict_by_category'); function check_user() { $user = wp_get_current_user(); if ( ! $user->ID || in_array('subscriber', $user->roles) ) { // user is not logged or is a subscriber return false; } return true; } function restict_by_category( $template ) { if ( ! is_main_query() ) return $template; // only affect main query. $allow = true; $private_categories = array('pilots', 'instructors'); if ( is_single() ) { $cats = wp_get_object_terms( get_queried_object()->ID, 'category', array('fields' => 'slugs') ); // get the categories associated to the required post if ( array_intersect( $private_categories, $cats ) ) { // post has a reserved category, let's check user $allow = check_user(); } } elseif ( is_tax('category', $private_categories) ) { // the archive for one of private categories is required, let's check user $allow = check_user(); } // if allowed include the required template, otherwise include the 'not-allowed' one return $allow ? $template : get_template_directory() . '/not-allowed.php'; } 

Was ich damit erwarte, ist bisher, dass, wenn der Benutzer nicht eingeloggt ist oder als Teilnehmer angemeldet ist, er keine Beiträge sehen kann, die “Piloten” oder “Ausbilder” in seiner Kategorie enthalten Listen. Was tatsächlich passiert ist, dass die Posten “Piloten” und “Ausbilder” für jeden sichtbar sind.

Die spezifischen Beiträge und Kategorien wurden durch die Verwendung eines Wissensdatenbank-Plugins erstellt. Ich frage mich, könnte das nicht funktionieren, weil meine “Kategorien” tatsächlich benutzerdefinierte Taxonomien sind? Wenn ja, wie kann ich das sicher herausfinden?

Oder stimmt etwas mit meinem Code nicht?

Solutions Collecting From Web of "Beschränken Sie die Anzeige von Beiträgen nach Kategorie, Benutzerrolle"

Das Problem mit meiner Kategorie war, dass es sich um eine benutzerdefinierte Taxonomie handelte:

 elseif ( is_tax('category', $private_categories) ) 

musste sein

 elseif ( is_tax('wzkb_category', $private_categories) ) 

Super einfach, aber könnte jemanden in Zukunft den richtigen Pfad schicken.