Einstellungs-API – Einstellungsfelder dynamisch hinzufügen?

Gibt es eine Möglichkeit, Einstellungsfelder dynamisch hinzuzufügen?

Ich habe meinen eigenen Einstellungs-API- Optionsgenerator, genau wie in Chip Bennets Önologie-Thema , alles funktioniert perfekt, aber ich finde keine Möglichkeit, dynamische Felder zu erstellen.

So füge ich Optionsfelder hinzu.

1. Zuerst beschreibe ich alle Felder:

function my_options() { $options = array( array( 'id' => '1', 'title' => '1', 'type' => 'foo', 'description' => 'bar', ), array( 'id' => '2', 'title' => '2', 'type' => 'foo', 'description' => 'bar', ), ); return $options; } 

2. Dann erzeuge ich Felder:

 foreach(my_options() as $field) { add_settings_field( $field['id'], $field['title'], "something", "else", "goes", "there" ); } 

Dann mache ich:

   

Gibt alle Felder zurück.

Aber was wenn ich einige der Felder “on the fly” generieren möchte, z. basierend auf einem anderen Array, einfach so:

 function my_options() { // $myarray = some array of elements taken from different source, like json data from other website etc. $count = 0; foreach($myarray as $something) { $count++; $options[] = array( 'id' => 'something'. $count, 'title' => $something['title'], 'type' => 'type', 'desription' => $something['description'], ); return $options; } 

Dann bekomme ich die Felder mit do_settings_sections () angezeigt, aber ich kann sie nicht auf Admin-Seiten speichern und wenn ich var_dump($opts); genau wie im obigen Beispiel existieren diese Optionen dort nicht.

Irgendwelche Hinweise?

Solutions Collecting From Web of "Einstellungs-API – Einstellungsfelder dynamisch hinzufügen?"

Es my_options müssten Sie diese dynamischen Felder bei jedem my_options in die my_options Methode my_options . Sie könnten versuchen, einen eigenen Filter zu erstellen:

 function my_options() { $myarray = apply_filters( 'my_get_options_dynamically', array() ); $count = 0; foreach($myarray as $something) { $count++; $options[] = array( 'id' => 'something'. $count, 'title' => $something['title'], 'type' => 'type', 'desription' => $something['description'], ); return $options; } add_filter( 'my_get_options_dynamically', function() { // Some code to get the dynamic option array. return array( array( 'title' => 'Some option title', 'description' => 'Some option description', ) ); } );