Ich hatte kürzlich das Bedürfnis, einige zusätzliche Meta-Informationen zu jeder Kategorie / benutzerdefinierten Taxonomie in WordPress zu speichern. Im Grunde musste ich nur ein zusätzliches Feld hinzufügen. Es war nur eine einfache Sache, die richtigen Hooks zu finden und ein einfaches Kategorie-Meta-Plugin zu erstellen. Wir fügen nicht eine Menge neuer Kategorien hinzu, wir mussten nur einige zusätzliche Informationen zu den vorhandenen speichern, also habe ich einfach in das Bearbeitungsformular gegriffen.
Ich wollte auch, dass dies funktioniert, ohne benutzerdefinierte Tabellen zu verwenden, aber es gibt wirklich keinen guten Ort, um Informationen dieser Art in den Standard-WordPress-Tabellen zu speichern. Ich entschied, dass die Tabelle wp_options am besten geeignet wäre, denn wenn es darauf ankommt, würden die meisten Websites nicht mehr als ein paar hundert Kategorien haben. Es gibt nicht genug Informationen, die an unserem Ende gespeichert werden, um ein Problem zu erzeugen.
add_action ('category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('bearbeitete_kategorie', 'taxonomy_meta_form');
Die erste Aktion hakt in der Kategorie / Taxonomie-Bearbeitungsform ein. Es zeigt das Formular an, das wir erstellt und von der Funktion taxonomy_meta_form_fields ausgegeben haben. Die zweite Aktion ruft taxonomy_meta_form auf, wenn das Kategorieformular tatsächlich bearbeitet wird.
Vollständiger Code
add_action ('category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('bearbeitete_kategorie', 'taxonomy_meta_form'); Funktion taxonomy_meta_form () {if (! current_user_can ('manage_options')) // Sicherstellen, dass der Benutzer über die entsprechenden Berechtigungen verfügt. return; if ($ _ POST ['extra_title']) {$ extra_titel = sanitize_text_field ($ _ POST ['extra_title']); // stelle sicher, dass nichts bösartiges $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // Aktualisiere den Wert für die ID dieser Kategorie update_option ('extra_taxonomy_titles', $ extra_titles); // speichere das Array, WP übernimmt die Serialisierung}} function taxonomy_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?>
Einbinden in benutzerdefinierte Taxonomien
add_action ('TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('editierte_TAXONOMYNAME', 'taxonomy_meta_form');
Um die gleiche Aktion auszuführen, aber für benutzerdefinierte Taxonomien, ist es einfach, den Aktionshaken zu ändern. Ersetzen Sie einfach TAXONOMYNAME oben durch den Slug, der Ihrer benutzerdefinierten Taxonomie zugeordnet ist.
Informationen anzeigen
Um die Informationen zu erhalten, die für uns auf dem Frontend gespeichert sind, würde ich empfehlen, eine einfache Funktion zum Speichern in der functions.php-Datei Ihres Themes zu erstellen:
Funktion tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ extra_title = $ extra_titles [$ id]; zurückgeben $ extra_title; }
Dann könnte es von einer Vorlagenseite wie folgt aufgerufen werden:
$ extra_title = tj_extra_title ($ category-> term_id); // ersetze die ID durch die Variable, die für deinen Kontext geeignet ist echo $ extra_title;
Code auf GitHub anzeigen Stellen Sie Fragen unten.