Bestimmte CPT-Kategorien nicht öffentlich abfragbar machen

Ich entwickle ein benutzerdefiniertes CMS für einen Kunden, und einer der Custom Post Types ist “Kontakt”. Diese Kontakte sind durch eine custom taxonomy in Kategorien unterteilt. Meine Frage ist, ob es eine Möglichkeit gibt, nur bestimmte Kategorien öffentlich abfragbar zu machen . Ich scheine nur in der Lage zu sein, Lösungen in Gang zu bringen, bei denen entweder alle Beiträge eines bestimmten Post-Typs nicht öffentlich und nicht öffentlich abfragbar sind oder umgekehrt, aber nicht nur diejenigen einer bestimmten Kategorie.

Einige zusätzliche Informationen, wie von @ kaiser vorgeschlagen: Die benutzerdefinierte Taxonomie wurde so eingerichtet, wie normale Kategorien für Posts und Seiten eingerichtet sind. Es ist nur die eine benutzerdefinierte Taxonomie, die diesen Aspekt behandelt. Ich möchte nur mit einem benutzerdefinierten Post-Typ arbeiten, da ich ansonsten gezwungen wäre, viele benutzerdefinierte Felder zu duplizieren, zum Beispiel: Alle ‘Kontakte’ haben viel gemeinsam (Kontaktdaten, etc ..), aber aus diesen ‘Kontakte’ Ich möchte nur bestimmte ‘Kategorien’ sichtbar und zugänglich von außerhalb des Admins; Beispielsweise sollte ein Kontakt mit der Kategorie “Künstler” öffentlich und in Kategorie- und Sitemap-Seiten angezeigt werden, nicht jedoch unter “Anbieter”.

Ich möchte nicht mehrere CPTs oder mehrere Taxonomien verwenden, wenn ich es vermeiden kann.

Vielen Dank für Ihre Anregungen.

Solutions Collecting From Web of "Bestimmte CPT-Kategorien nicht öffentlich abfragbar machen"

Klingt so, als ob du nur einen Filter auf pre_get_posts , um die unerwünschten Begriffe zu entfernen. So etwas, aber ich bin mir nicht sicher, ob ich alle Bedingungen verstehe, die du benötigst, also halte es nur für einen Beweis des Konzepts.

 function exclude_terms_wpse_117242($qry) { if (is_user_logged_in()) { $tq = array( array( 'taxonomy' => 'your_tax', 'field' => 'id', 'terms' => array(1,2,3), 'operator' => 'NOT IN', ) ); $qry->set('tax_query',$tq); } } add_action('pre_get_posts','exclude_terms_wpse_117242');