Ich verwende register_taxonomy_for_object_type()
, um das Feld Kategorie Taxonomie zu Medien-Uploads (Anhängen) hinzuzufügen. Ich benutze dazu diesen Code:
add_action('init', 'reg_tax');
function reg_tax() {
register_taxonomy_for_object_type('category', 'attachment');
}
Dies funktioniert und fügt der Seite Medien ein einfaches Textfeld für Kategorie hinzu, wenn ein Bild angezeigt wird. Ich möchte wirklich, dass die eigentliche Kategorien-Metabox angezeigt wird, damit ich die Kategorien auswählen kann, die ich verwenden möchte, anstatt sie einfach in das einfache Feld einzugeben. Ich habe auch festgestellt, dass das Einfügen des Slugs für eine Kategorie in dieses Textfeld, beispielsweise my-category-name
, als tatsächlicher Kategoriename angezeigt wird, wie My Category Name
beim Speichern, was das einfache Textfeld noch weniger zu einer nützlichen Option macht.
Ich habe mir die add_post_type_support()
Funktion zum Hinzufügen von Metaboxen angeschaut und gesehen, dass sie für benutzerdefinierte Post-Typen verwendet wird. Ich kann nur nicht sehen, ob es möglich ist, dasselbe für Anhänge hinzuzufügen.
quelle
Antworten:
Bearbeiten: 12/09/2017 In dieser Antwort finden Sie eine aktuellere Lösung für dieses Problem: Wie werden Taxonomien für Anhänge mit der neuen Medienbibliothek verwendet?
Ich werde hier meine eigene Frage beantworten, da ich es geschafft habe, eine Lösung für das zu finden, was ich versucht habe. Ich bin zu dem Schluss gekommen, dass es nicht möglich war, die Category Metabox für Anhänge zu aktivieren. Ich fand jedoch, dass es einfach genug war, ein Basisfeld für Kategorien zu erhalten, die der Seite mit Anhängen hinzugefügt wurden, indem
register_taxonomy_for_object_type
und verwendet wurdenadd_post_type_support
:Das hinzugefügte Feld sah folgendermaßen aus:
Es ist nur ein Klartextfeld, aber ich habe festgestellt, dass Sie den Namen einer vorhandenen Kategorie eingeben können, die dann erfolgreich gespeichert wird, wenn der Anhang aktualisiert wird die Schnecke nach dem Speichern).
Als ich merkte, dass ich Kategorien auf diese Weise speichern konnte, stellte ich fest, dass ich eine Liste aller verfügbaren Kategorien als Kontrollkästchen erhalten und die ausgewählten markieren konnte. Ich habe dann ein bisschen jQuery verwendet, um die Werte der aktivierten Kategorien zu erfassen und alle Slugs der Kategorien in das Feld Category zu übernehmen. Um dies noch nahtloser erscheinen zu lassen, habe ich dann die Tabellenzeile mit einem einfachen CSS-Code ausgeblendet, in der sich das Feld "Kategorie" befand. Sie sehen also immer nur die Kontrollkästchen:
Da ich jetzt Kategorien zu Bildanhängen hinzufügen kann, kann ich Folgendes verwenden:
Und ziehen Sie die kategorisierten Bilder in eine Seite! Genau das, was ich mir erhofft hatte, hätte ich nicht gedacht, dass es einen Weg geben würde, aber ich bin froh, dass ich etwas herausgefunden habe.
Ich habe dieses Plugin in ein Plugin umgewandelt,
WOS Media Categories
das ich auf meiner Website Suburbia.org.uk zum Herunterladen zur Verfügung gestellt habe . Ich hoffe, es kann jemand anderem von Nutzen sein! Nochmals vielen Dank an alle, die diese und andere Fragen, die ich hier gestellt habe, kommentiert haben.Update: Es wurde ein Fix hinzugefügt, mit dem Kategorien hinzugefügt werden können, während Bilder mit dem Flash-Bulk-Uploader hochgeladen werden.
quelle
Dies wurde soeben erstellt. Dies ist eine vollständige Problemumgehung für die herky-jerk-Javascript-Verknüpfung mit dem Formularfeld. Da die Werte Ihrer Kontrollkästchen beim Senden zusammen mit $ _POST übergeben werden, können Sie sie einfach während des Filters add_image_attachment_fields_to_save abrufen und die Bedingungen für das Post-Objekt festlegen.
(Beachten Sie, dass ich eine benutzerdefinierte Taxonomie und keine Kategorien verwende. Daher müssen Sie das $ categories-Array so ändern, dass es mit dem Array übereinstimmt, das Sie beim Einrichten Ihrer Kontrollkästchen verwenden.)
Shabam, shabozzle. Genießen.
quelle
wp_set_object_terms( $post['ID'], $terms, 'image-format' ); return $post;
. Und das Skript, das Sie gepostet haben, führt register_custom_taxonomies nicht aus. Aber trotzdem schönes Drehbuch. Ich werde dies auf jeden Fall in der Zukunft nutzen!Dies ist schwierig / kompliziert, wenn Sie das Standard-Kategoriefeld von WordPress verwenden möchten. Zum einen gibt die Metabox die Ausgabe nicht zurück, sondern gibt sie nur wieder. Darüber hinaus würde es Ihnen nicht den richtigen Namen für das Eingabefeld geben, sodass es nicht speichern würde. Eine Möglichkeit besteht darin, die Funktionen des Felds "Tags" mithilfe der automatischen Vervollständigung der jQuery-Benutzeroberfläche zu replizieren.
Wenn Sie jedoch mit den Feldern
'attachment_fields_to_edit'
des Medieneditors herumspielen möchten, können Sie das Feldarray einbinden und bearbeiten. Der Filter übergibt zwei Argumente an den Rückruf: Das erste Argument ist das Feldarray, das zweite das Objekt für den Anhangsposten. Weitere Details finden Sie hier:http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-admin/includes/media.php.source.html#l1025
quelle
attachment_fields_to_edit
und sehe, wie das geht.Ich habe ein Plugin mit @ RickCurrans WOS Media Categories als Ausgangspunkt erstellt. Allerdings fügt WOS Media Categories, wie andere Plugins, die Medien Kategoriefunktionen hinzufügen, keine Metabox hinzu. Ich habe genau das getan.
Die Metaboxen auf Posts und Seiten sind notwendigerweise vereinfacht, aber ich habe eine Filterfunktion hinzugefügt, die die Verwendung vereinfacht.
Ich erstelle tatsächlich die gesamte Kategorie-Metabox, die Sie auf Seiten und Posts sehen, aber verstecke die Teile, die auf der Medienseite nicht funktionieren, sowohl wegen des Mangels an Styling als auch wegen des fehlenden Javascript.
Ich freue mich über alle Überlegungen, wie die Metabox voll funktionsfähig gemacht werden kann - etwas, das ich in einer späteren Version beabsichtige.
quelle
Tolles Plugin Rick - sehr hilfreich.
Wenn Sie den Onclick-Trigger inline verschieben, anstatt ihn an Onload zu binden (und ein paar kleinere Änderungen vornehmen), funktioniert dies auch beim Flash-Bulk-Uploader. In der aktuellen Version wird Flash nach dem jQuery-Ladeereignis geladen, sodass die Objekte noch nicht vorhanden sind.
überarbeitetes js:
Füge einen Klick zur Eingabe in die PHP-Datei hinzu:
Bulk-Uploader-Formular-ID zur CSS-Datei hinzufügen:
}
quelle