Add_settings_field () Callback parametrisieren?

Ich versuche, eine ziemlich große und umfangreiche Einstellungsseite mit verschiedenen Optionen von sehr ähnlichem Typ zu erstellen.

Da es ungefähr 20 verschiedene Felder geben wird, und die Unterschiede zwischen den meisten davon einfach ihre ID sind, möchte ich vermeiden, für jeden einen separaten callback zu erstellen.

Ist es möglich, einen Callback mit einer Variablen für die Einstellungs-ID jedes dieser Felder durchzuführen? Auf diese Weise kann ein Callback verschiedene Einstellungsfelder desselben Typs verwalten.

Ich habe versucht, den Parameter $ args für add_setitngs_feild (), aber leider funktioniert es nicht. Beispielsweise:

add_settings_field('name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', array("settingID!")); function fieldCallback($id) { echo "";//etc, etc } 

fieldCallback si wird aufgerufen, aber die ID der Eingabe ist leer.

Solutions Collecting From Web of "Add_settings_field () Callback parametrisieren?"

Das letzte optionale Argument $args , das Sie an add_settings_fields() wird an den Callback übergeben. Es scheint also, dass Sie denselben Callback verwenden können.

Ich hoffe, ich habe Recht, denn ich bin gerade über diese zwei Minuten wegen der Diskussion im Chat gestolpert. 🙂

PS hat Code durchgesehen und es ist in der Tat relativ neu, bevor ~ 2.9 Argumente nicht bestanden wurden.

Im letzten (optionalen) Argument $args in der function add_settings_field() können Sie array('label_for' => 'something') wie es in der Dokumentation geschrieben wurde (siehe http://codex.wordpress.org/Function_Reference/add_settings_field ). .

Also, wenn du die ID deines Feldes weitergeben willst, benutze ‘label_for’ dafür 🙂

Die Art und Weise, wie WordPress hier Argumente an die Callback-function übergibt, ist ein bisschen schwierig, die Callback-function empfängt das gesamte $args Array als Parameter, daher sollten Sie die function wie folgt ändern:

 function fieldCallback(array $args) { echo "";//etc, etc } 

und du lässt add_settings_field wie es ist.

 add_settings_field( 'name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', $args=array("settingID!") ); function fieldCallback($id) { `echo "";` } 

ODER

was Jacer Omri illustriert hat