wake-up-neo.com

Kategorie nur für bestimmte Benutzerebenen ohne Plugin anzeigen

Ich baue eine Seite für einige Soldaten, auf der sie Fotos teilen können, und eine Sache überrascht mich immer wieder.

Sie haben einige Fotos, die jeder sehen soll, der für die Site angemeldet ist, und andere, die nur sie sehen können. Aber sie können keine Administratoren sein.

Die einzige Hilfe, die ich finden kann, besteht darin, nur bestimmten Benutzerebenen zu erlauben, einer Kategorie POST zuzuweisen. Ich möchte "Abonnenten" grundsätzlich davon abhalten, einige Beiträge zu sehen.

Ich möchte niemanden bitten, etwas für mich zu schreiben, aber ein Punkt in die richtige Richtung wäre großartig.

2
OneEightLeft

Wenn ich verstehe, haben Sie einige Kategorien, z. B. "reserviert", "Menschen", "Landschaften", "persönlich" und so weiter.

Jetzt möchten Sie, dass Abonnenten Beiträge in z. Kategorien "Menschen", "Landschaften", aber keine Beiträge in "reservierten" und "persönlichen" Kategorien.

Dies ist relativ einfach. Hängen Sie sich einfach in pre_get_posts ein und deaktivieren Sie die Anzeige, wenn die Anfrage nach einem Beitrag mit diesen Begriffen oder dem Begriffsarchiv lautet.

Um zu deaktivieren, dass Sie unterschiedliche Änderungen haben, können Sie umleiten, 404 anzeigen oder eine benutzerdefinierte Vorlage anzeigen.

Im Folgenden sage ich, wie die letzte Option erfolgen soll.

Erstellen Sie zunächst eine Vorlagendatei, z. not-allowed.php und in deinen Themenordner legen.

Dann in functions.php diesen Code verwenden:

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('reserved', 'personal'); // categories subscribers cannot see
  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';
}
4
gmazzap

Laden Sie das Plug-in herunter und installieren Sie es. Restrict Categories . Schränken Sie bestimmte Kategorien für bestimmte Rollen ein und veröffentlichen Sie die Fotos in den entsprechenden Kategorien.

0
Nikolay