Ich erstelle ein Widget, es muss ungefähr 10 IDs speichern. Im Moment verwende ich die folgende Feldmethode, um jede ID in einem separaten Feld zu speichern. Es speichert Daten von jedem Feld in einem separaten im WordPress. Ist es möglich, die Daten aller Felder in nur einer Zeile in WordPress zum Beispiel mithilfe eines Arrays zu speichern?
<input
class="widefat"
id="<?php echo $this->get_field_id('item1_id'); ?>"
name="<?php echo $this->get_field_name('item1_id'); ?>"
value="<?php echo $instance['item1_id']; ?>"
/>
<input
class="widefat"
id="<?php echo $this->get_field_id('item2_id'); ?>"
name="<?php echo $this->get_field_name('item2_id'); ?>"
value="<?php echo $instance['item2_id']; ?>"
/>
$instance
ist ein Array und enthält alle Werte. Und was meinen Sie mit "Speichern der Daten aller Felder in nur einer Zeile"? Meinten Sie eine Datenbankzeile?Antworten:
Sie müssen mehrere Felder unter demselben Namen wie folgt sammeln ...
… Und passen Sie Ihre Widget-Logik daran an.
Hier ist ein sehr einfaches Demo-Widget:
Backend
Vorderes Ende
quelle
printf
Syntaxclass="widefat"
für die Felder.Die obige Antwort ist gut, wenn die Felder nummeriert werden müssen. In meinem Fall habe ich nicht. Ich habe ein Widget mit Optionen, mit denen der Benutzer eine beliebige Anzahl von Kategorien auswählen kann, die innerhalb des Widgets verwendet werden sollen.
Hier ist mein Widget
form
. - Drei wichtige Dinge hierarray()
wenn der Wert des Widgets nicht festgelegt ist<label>
name
, dass ich[]
am Ende ein anhänge. Dies teilt PHP mit, dass ich ein Array von Werten für diesen Schlüssel sende<label><input type="checkbox" ...></label>
. - Jedes unserer Kontrollkästchen hat kein eindeutigesid
Attribut, daher<label>
for
funktioniert das Attribut nicht. Wir könnten eindeutige IDs generieren, aber das ist ein Ärger. Wenn Sie das Etikett nur um die Eingabe wickeln , wird das Etikett ordnungsgemäß zugeordnet, ohne dass dasfor
+ mühsam angeschlossen werden mussid
Nun der Code
Und hier ist meine Update-Funktion
Ich bin in die Rettung der Kategorie IDs in einem Array interessiert, die Zahlen sind, so dass ich
array_map
mit ,intval
um sicherzustellen , dass alle eingereichten Datum gültig ganze Zahlen sind. Außerdemarray_filter
entferne ich ungültige Einsendungen.Es ist besonders schwierig, dieses WordPress-Zeug zu beschreiben. Wenn Sie Fragen haben, werde ich gerne näher darauf eingehen.
quelle