Wie wähle ich eine Hauptkategorie (oder eine benutzerdefinierte Taxonomie) für einen benutzerdefinierten Posttyp aus?

Ich habe eine hierarchische benutzerdefinierte Taxonomie (Genre) erstellt und möchte sie für einen benutzerdefinierten Posttyp (Radiosender) verwenden. Aber ich möchte nicht nur ein paar Genres einem Radiosender zuordnen. Ich möchte auch in der Lage sein, ein Haupt- / Hauptgenre als “wichtigstes Genre” für jede Radiostation auszuwählen.

Ist es möglich, ein (natives) “select only one [custom taxonomy]” – Feld zu dem benutzerdefinierten Post-Typ-Meta-Feld im Admin-Bereich hinzuzufügen? Oder gibt es noch eine einfachere Möglichkeit, eines der ausgewählten Genres als Haupt- / Hauptgenre zu definieren?

Danke für Ihre Hilfe!

Grüße,
René

Solutions Collecting From Web of "Wie wähle ich eine Hauptkategorie (oder eine benutzerdefinierte Taxonomie) für einen benutzerdefinierten Posttyp aus?"

Wenn ich Ihre Frage richtig verstanden habe, dann müssen Sie dem Code zwei Antworten aus den folgenden Fragen dieses Stacks beifügen:

  • Ändern von Top-Level-Elementen in Optionsfelder im Kategorien-Meta-Feld?
  • Übergeordnete Kategorien nicht auswählbar machen

Dies ist das Ergebnis, wenn Kategorien auf oberster Ebene in Optionsfelder konvertiert werden, sodass nur eines ausgewählt werden kann.
Die Einschränkung besteht darin, dass Unterkategorien aus anderen Kategorien der obersten Ebene ebenfalls ausgewählt werden können.
Ergebnis aus Code

Wie ich in meiner Antwort auf die zweite Frage erwähnt habe, ist das Scribus-Plugin, Kategorie-Checklisten-Baum , für dieses Szenario fast eine Notwendigkeit.

Ich werde den vollständigen Code nicht erneut eingeben, es ist nur eine Frage des Ersetzens dieser Zeilen:

jQuery("#categorychecklist>li>label input").each(function(){ jQuery(this).hide(); }); 

Für diese:

 jQuery("#genrechecklist>li>label input").each(function(){ this.type = 'radio'; }); 

Achtung auf die ID der

    :
    Bildbeschreibung hier eingeben

    [Aktualisieren]
    Um zu wissen, welche Kategorie die “Hauptkategorie” ist, kann ich von allen ausgewählten Eltern oder Kindern nur an ein benutzerdefiniertes Feld denken, das diese Informationen enthält.

    Dies könnte programmgesteuert getriggers werden, indem eine neue Meta-Box erstellt wird, eine Dropdown-Liste mit allen Kategorien angezeigt wird und diese als Post-Meta ( update_post_meta ) update_post_meta .

    Und mit einem Plugin kann dies mit erweiterten benutzerdefinierten Feldern und dem Taxonomie-Feld-Add-On geschehen. Was dazu führt:
    acf Kategorien

    Sie könnten ein Hauptgenre als eine Taxonomie und Subgenres als ein anderes (vielleicht “Stile” oder etwas) tun? Dann könntest du (schamlose Eigenwerbung) mein Radioknöpfe für Taxonomie- Plugin verwenden, um die Metabox für das Hauptgenre auf Radio-Buttons zu beschränken. Im Moment können Sie die Einschränkung der Optionsschaltfläche in der Schnellbearbeitung noch umgehen, aber ich arbeite daran. Obwohl es schwierig ist, da es keine Haken zum Arbeiten gibt.

    Zugegeben, dieser Ansatz funktioniert möglicherweise nicht gut, wenn Sie die Permalinks so einrichten müssen, dass sie wie folgt aussehen:

    http://example.com/main-genre/sub-genre/post

    Obwohl es technisch möglich ist, das mit einem glatten Voodoo-Neuschreiben zu erreichen. Aber wenn Sie unbegrenzte Sub-Genres hinzufügen, dann bezweifle ich, dass das jemals gut funktionieren würde.

    Aber ich weiß, dass du Folgendes tun kannst:

     http://example.com/main-genre/sub-genre 

    Sub-Genre ist ein Post-Tag und Haupt-Genre ist eine Kategorie . Ich habe das einmal mit »WooCommerce« gemacht und die Suche nach der Hauptgenrepage basierend auf dem Subgenrewert modifiziert. Es war jedoch definitiv schwierig.

    Aus Ihrer Beschreibung von 1 Hauptgenre und unbegrenzten Subgenres lässt es mich jedoch an Kategorien und Tags für Posts denken.

    Ich wühle nur hier, obwohl ich vermute, dass du es inzwischen irgendwie getriggers hast.

     function convert_root_cats_to_radio() { global $post_type; if ('activity' == $post_type) { ?>  < ?php } } add_action('admin_footer-post.php', 'convert_root_cats_to_radio'); add_action('admin_footer-post-new.php', 'convert_root_cats_to_radio');