Wie kann ich programmgesteuert Daten in benutzerdefinierten Feldern speichern, die serialisierte Daten enthalten?

Ich habe kürzlich ein Theme aus Themeforest gekauft, das einen benutzerdefinierten Posttyp hat. Hier ist ein Link zu einer Seite, die mit dem benutzerdefinierten Beitragstyp erstellt wurde:

http://bluepresley.com/farmerfinder/?dir-item=dance-relax

Der benutzerdefinierte Post-Typ verfügt über ungefähr 20 verschiedene benutzerdefinierte Felder, aber Sie können von meinem Array-Abbild sehen, dass das eine Feld als serialisierte Daten gespeichert wurde:

(Array-Dump mit get_post_custom ())

Array ( [_edit_last] => Array ( [0] => 1 ) [_ait-dir-item] => Array ( [0] => a:20:{s:7:"address";s:51:"276 Canal Street, New York, NY 10013, United States";s:11:"gpsLatitude";s:17:"40.71958306715651";s:12:"gpsLongitude";s:17:"-74.0379810333252";s:14:"showStreetview";a:1:{s:6:"enable";s:6:"enable";}s:18:"streetViewLatitude";s:9:"40.719679";s:19:"streetViewLongitude";s:18:"-74.03797400000002";s:17:"streetViewHeading";s:18:"-151.8987176681924";s:15:"streetViewPitch";s:17:"5.196265482127373";s:14:"streetViewZoom";s:1:"0";s:9:"telephone";s:13:"044 802 52578";s:5:"email";s:19:"directory@email.com";s:3:"web";s:17:"www.aitthemes.com";s:11:"hoursMonday";s:9:"8am - 8pm";s:12:"hoursTuesday";s:9:"8am - 8pm";s:14:"hoursWednesday";s:9:"8am - 8pm";s:13:"hoursThursday";s:9:"8am - 8pm";s:11:"hoursFriday";s:9:"8am - 8pm";s:13:"hoursSaturday";s:6:"closed";s:11:"hoursSunday";s:6:"closed";s:18:"alternativeContent";s:33:"What goes in alternative content?";} ) [_thumbnail_id] => Array ( [0] => 8159 ) [_edit_lock] => Array ( [0] => 1409208357:1 ) [slide_template] => Array ( [0] => ) ) 

Bitte beachten Sie, dass es sich bei dem Schlüssel um einen _ait-dir-item handelt.

Mir ist aufgefallen, dass im Formular selbst alle Formularfelder named name="_ait-dir-item[address]" (zB) benannt wurden.

Wenn das der Fall ist, wie programmiere ich Elemente programmgesteuert? Ist das WordPress typisch und es gibt eine Möglichkeit, mit diesem Ansatz umzugehen? Ich nehme an, dass ich add_post_meta( $post_id, 'mymetakey', $my_long ); oder andere Ansätze hier und hier gefunden . ?

Solutions Collecting From Web of "Wie kann ich programmgesteuert Daten in benutzerdefinierten Feldern speichern, die serialisierte Daten enthalten?"

Zum Serialisieren und Deserialisieren von Daten in WordPress können Sie may_unserialize und may_serialize verwenden . Wenn Sie mit den Daten umgehen und Werte hinzufügen / ändern möchten, könnten Sie Folgendes verwenden:

 $metaarray = maybe_unserialize(get_post_meta($post_id,'_ait-dir-item',TRUE)); //now $metaarray has an array, if it is serialized. If not, $metaarray has a string. if(is_array($metaarray)){ $metaarray['mynewfield'] = 'Some text i need to add'; $metaarray['mysecondnewfield'] = array('an' => 'array','i' => 'need', 'to' => 'add'); } update_post_meta($post_id,'_ait-dir-item',maybe_serialize($metaarray)); 

Glückliche Kodierung, Kuchenundkakao