Add_settings_field () parametrizando la devolución de llamada?

4

Estoy intentando crear una página de configuración bastante grande y extensa con varias opciones de tipo muy similar.

Ya que habrá alrededor de 20 campos diferentes, y las diferencias entre la mayoría de los que son simplemente su ID, me gustaría evitar crear una devolución de llamada separada para cada uno.

¿Es posible realizar una devolución de llamada con una variable para la ID de configuración de cada uno de estos campos? De esa manera, una devolución de llamada puede servir varios campos de configuración del mismo tipo.

He intentado usar el parámetro $ args para add_setitngs_feild (), pero lamentablemente, no funciona. Por ejemplo:

add_settings_field('name', 'Field Name', array($this, 'fieldCallback'), 'SettingsGrouP', 'SettingsSection', array("settingID!")); 


function fieldCallback($id)
{
    echo "<input id='" . $id . "'/>";//etc, etc
}
Se ha llamado a

fieldCallback si, pero el ID de la entrada está en blanco.

    
pregunta Georges Oates Larsen 19.05.2011 - 18:47

4 respuestas

2

El último argumento opcional $args que puede pasar a add_settings_fields() se pasa a devolución de llamada. Así que parece que puedes usar la misma devolución de llamada muy bien.

Espero tener razón porque me topé con esto hace dos minutos debido a una discusión en el chat. :)

PS revisó el código y es relativamente reciente, antes de que no se pasaran ~ 2.9 argumentos.

    
respondido por el Rarst 19.05.2011 - 19:03
0

En el último argumento (opcional) $args en la función add_settings_field() puede usar array('label_for' => 'something') tal como está escrito en la documentación (consulte enlace ).

Entonces, si quieres pasar la identificación de tu campo, usa 'label_for' para ello :)

    
respondido por el kaciak 13.11.2011 - 12:07
0

La manera en que Wordpress pasa los argumentos a la función de devolución de llamada aquí es un poco difícil, la función de devolución de llamada recibe la matriz $args completa como parámetro, por lo que es posible que desee cambiar la función de la siguiente manera:

function fieldCallback(array $args)
{
    echo "<input id='" . $args[0] . "'/>";//etc, etc
}

y dejas add_settings_field como está.

    
respondido por el Jacer Omri 28.07.2013 - 09:12
-2
add_settings_field(
    'name', 
    'Field Name', 
    array($this, 'fieldCallback'), 
    'SettingsGrouP', 
    'SettingsSection',
    $args=array("settingID!")
); 

function fieldCallback($id) {
   'echo "<input id='" . $id[0] . "'/>";'
}

O

lo que ilustró Jacer Omri

    
respondido por el Lost 101 09.02.2015 - 10:22

Lea otras preguntas en las etiquetas