Fügen Sie ein benutzerdefiniertes Feld zur Kategorie hinzu

Ich möchte benutzerdefinierte Felder zu einer bestimmten Kategorie hinzufügen. Eine Kategorie hat nur folgende Felder:

Name:

Schnecke:

Elternteil:

Beschreibung:

Da ich eine TV-Serien-Website habe, möchte ich einige weitere Felder hinzufügen, ich möchte etwas wie das, wenn ich eine neue Kategorie erstellen (Kategorie = Serie)

Name:

Künstler:

Jahr:

Art:

Genre:

Zusammenfassung:

Schnecke:

Elternteil:

Beschreibung:

Und so weiter…

Irgendwelche Hilfe bitte? Danke im Voraus.

Solutions Collecting From Web of "Fügen Sie ein benutzerdefiniertes Feld zur Kategorie hinzu"

Ich habe vor einer Woche ein How To geschrieben http://en.bainternet.info/2011/wordpress-category-extra-fields

hoffe das hilft.

Ohad.


Hier sind die Details des Beitrags:

Das erste, was wir tun müssen, ist das Hinzufügen der zusätzlichen Felder zum Kategorie-Bearbeitungsformular mit dem Hook edit_category_form_fields und wir verwenden eine einfache function, die die zusätzlichen Felder ausdruckt.

< ?php //add extra fields to category edit form hook add_action ( 'edit_category_form_fields', 'extra_category_fields'); //add extra fields to category edit form callback function function extra_category_fields( $tag ) { //check for existing featured ID $t_id = $tag->term_id; $cat_meta = get_option( "category_$t_id"); ?>    
< ?php _e('Image for category: use full url with '); ?>
< ?php _e('extra field'); ?>
< ?php _e('extra field'); ?>
< ?php _e('extra field'); ?> < ?php }

Wie Sie sehen können, habe ich 4 neue Felder hinzugefügt, und alle sind in einem Array Cat_meta [key], weil wir nur in der Optionstabelle eine Zeile erstellen, um alle zusätzlichen Felder der Kategorie anstelle einer Zeile für jedes Feld zu speichern.

Als nächstes müssen wir die zusätzlichen Felder in der database speichern, sobald ein Benutzer das Kategoriebearbeitungsformular einreicht, und wir verwenden das "edited_category" mit einer function, die jedes der übermittelten Felder durchläuft und sie mit der function update_option in die database einfügt , so was:

 < ?php // save extra category extra fields hook add_action ( 'edited_category', 'save_extra_category_fileds'); // save extra category extra fields callback function function save_extra_category_fileds( $term_id ) { if ( isset( $_POST['Cat_meta'] ) ) { $t_id = $term_id; $cat_meta = get_option( "category_$t_id"); $cat_keys = array_keys($_POST['Cat_meta']); foreach ($cat_keys as $key){ if (isset($_POST['Cat_meta'][$key])){ $cat_meta[$key] = $_POST['Cat_meta'][$key]; } } //save the option array update_option( "category_$t_id", $cat_meta ); } } 

Aus dem obigen Code können Sie sehen, dass alle zusätzlichen Felder, die wir hinzugefügt haben, in der Optionsliste der database mit dem Namen 'category_ID' gespeichert sind. ID ist die ID der gerade bearbeiteten Kategorie und das bedeutet, dass wir sie aufrufen können Daten in unseren Plugins oder Theme-Dateien einfach mit der function get_option.

sagen Sie zum Beispiel, dass meine Kategorie-ID 25 ist, dann wird mein Code aussehen

 < ?php $cat_data = get_option('category_25'); ?> 

Wie ich zu Beginn gesagt habe, muss ich für jede Kategorie ein anderes Bild anzeigen. In diesem Fall habe ich diese Codezeilen in die category.php meines Themes eingefügt, direkt nach dem Code, der den Titel der Kategorie anzeigt:

 < ?php //first get the current category ID $cat_id = get_query_var('cat'); //then i get the data from the database $cat_data = get_option("category_$cat_id"); //and then i just display my category image if it exists if (isset($cat_data['img'])){ echo '
'; }

Schön und einfach und wir sind alle fertig. Das Ergebnis sollte ähnlich aussehen:

Bildbeschreibung hier eingeben

Ab WordPress 4.4 wurden die functionen add_term_meta () , update_term_meta () und get_term_meta () hinzugefügt. Dies bedeutet, dass der von MxmastaMills bereitgestellte Code aktualisiert werden kann, um einen weit weniger hacky Ansatz zu verwenden.

Hier ist mein Update davon. Es gibt nur ein Feld, da ich einen benutzerdefinierten Titel hinzufügen möchte, aber es funktioniert für alle Felder, die Sie hinzufügen möchten.

 function addTitleFieldToCat(){ $cat_title = get_term_meta($_POST['tag_ID'], '_pagetitle', true); ?>    
< ?php _e('Title for the Category '); ?> < ?php } add_action ( 'edit_category_form_fields', 'addTitleFieldToCat'); function saveCategoryFields() { if ( isset( $_POST['cat_title'] ) ) { update_term_meta($_POST['tag_ID'], '_pagetitle', $_POST['cat_title']); } } add_action ( 'edited_category', 'saveCategoryFields');

Paul Menard lieferte ein Beispiel dafür, wie man in seinem Blog Begriffsmeta erstellt und verwendet …
Benutzerdefiniertes Meta für neue Taxonomien in WordPress 3.0 .

Es gibt kein Beispiel für das Erstellen der DB-Tabelle oder die Überprüfung von $_POST , also müssen Sie diese kleinen Dinge selbst tun, aber es sieht wie eine anständige Code-Basis aus, auf die Sie … bauen können 🙂

Dieser Code funktioniert:

 add_action ( 'edit_category_form_fields', function( $tag ){ $cat_title = get_term_meta( $tag->term_id, '_pagetitle', true ); ?>     

< ?php _e('Title for the Category '); ?>

< ?php }); add_action ( 'edited_category', function() { if ( isset( $_POST['cat_title'] ) ) update_term_meta( $_POST['tag_ID'], '_pagetitle', $_POST['cat_title'] ); });