Add_settings_field () parametrizando callback?

4

Estou tentando criar uma página de configurações bastante ampla e extensa com várias opções de tipo muito semelhante.

Como haverá cerca de 20 campos diferentes e as diferenças entre a maioria deles é simplesmente sua ID, eu gostaria de evitar criar um retorno de chamada separado para cada um.

É possível fazer um retorno de chamada com uma variável para o ID de configurações de cada um desses campos? Dessa forma, um retorno de chamada pode armazenar vários campos de configurações do mesmo tipo.

Eu tentei usar o parâmetro $ args para add_setitngs_feild (), mas, infelizmente, isso não funciona. Por exemplo:

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


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

fieldCallback está sendo chamado, mas o ID da entrada está em branco.

    
por Georges Oates Larsen 19.05.2011 / 18:47

4 respostas

2

O último argumento $args opcional que você pode passar para add_settings_fields() é passado para retorno de chamada. Então parece que você pode usar o mesmo callback muito bem.

Espero ter razão, porque acabei de me deparar com isso há dois minutos devido à discussão no chat. :)

PS analisou o código e é realmente relativamente recente, antes de ~ 2.9 argumentos não serem aprovados.

    
por Rarst 19.05.2011 / 19:03
0

No último argumento (opcional) $args in add_settings_field() function, você pode usar array('label_for' => 'something') como está escrito na documentação (veja enlace ).

Então, se você quiser passar o id do seu campo, use 'label_for' para ele:)

    
por kaciak 13.11.2011 / 12:07
0

A forma como o Wordpress transmite argumentos para a função de retorno de chamada aqui é um pouco complicada, a função de retorno de chamada recebe todo o array $args como parâmetro, portanto, você pode alterar a função da seguinte forma:

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

e você deixa add_settings_field como está.

    
por 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] . "'/>";'
}

OR

o que Jacer Omri ilustrou

    
por Lost 101 09.02.2015 / 10:22