No funcionaba lo de edit_theme_options pero... finalmente lo he conseguido!
El problema es que faltaba llamar a las opciones guardadas en la variable $general_options, lo he modificado así:
Código PHP:
<?php
function simplyColor_buttons ($args) {
global $general_option;
$general_option = get_option ('general_option');
foreach ( buttons_options() as $buttons ) :
?>
<input type="checkbox" name="general_option[buttons]" value="<?php echo $buttons['value']; ?>" <?php checked( $general_option['buttons'], $buttons['value'] ); ?> />
<span><?php echo $buttons['label']; ?></span>
<?php
endforeach;
}?>
Aunque sigo teniendo un pequeño problema, que tiene que ver con los checkbox. Solo puedo marcar 1, no puedo elegir todos, es decir, se comportan como si fueran input radio en vez de input checkbox.
Me imagino que ocurre porque todos tienen el mismo name. Por eso he intentado crear otro parametro en los arrays facebook, twitter y google en el que guardar el name del campo del formulario pero no funciona (o lo hago mal). Aqui lo pongo:
Código PHP:
<?php
function buttons_options () {
$buttons_options = array (
'facebook' => array (
'name'=>'button1',
'value' => '1',
'label' => 'Añadir boton de facebook'
),
'twitter' => array (
'name'=>'button2',
'value' => '2',
'label' => 'Añadir boton de Twitter'
),
'google' => array (
'name'=>'button3',
'value' => '3',
'label' => 'Añadir boton de Google+'
)
);
return apply_filters( 'buttons_options', $buttons_options );
}
function simplyColor_buttons ($args) {
global $general_option;
$general_option = get_option ('general_option');
foreach ( buttons_options() as $buttons ) :
?>
<input type="checkbox" name="general_option[<?php echo $buttons['name']; ?>]" value="<?php echo $buttons['value']; ?>" <?php checked( $general_option[' echo $buttons["name"]'], $buttons['value'] ); ?> />
<span><?php echo $buttons['label']; ?></span>
<?php
endforeach;
}?>
Muchas gracias por tu ayuda rogertm, por fin parece que veo la luz al final del tunel con esto de las settings jajaa
EDITO: No se comporta como un input radio, si no que se queda marcado el ultimo por orden del valor o de posicion no se, es decir si marco el primero y el ultimo, se queda marcado solo el ultimo, si marco el 1 y el 2 se queda el dos...