J'écris un plugin et j'ai décidé d'avoir plusieurs pages pour différentes options du plugin (par souci de clarté). Faire une seule option était un jeu d'enfant, mais je rencontre des difficultés lorsque j'ai plusieurs pages.
Toutes mes options sont dans un tableau enregistré en tant que:
register_setting( 'plugin_options', 'options', 'validator' );
Comme je l'ai dit, n'avoir qu'une page était facile. Créer le formulaire, soumettre le formulaire et le boom, options enregistrées. Maintenant que j'ai plusieurs pages, il semble que Wordpress remplace entièrement le tableau d'options, même s'il existe peut-être d'autres valeurs que je ne souhaite pas aborder. J'ai essayé plusieurs options, puis j'ai cherché sur Google pour trouver cette solution sur le site Web d'Otto :
function plugin_options_validate($input) {
$options = get_option('plugin_options');
$options['text_string'] = trim($input['text_string']);
if(!preg_match('/^[a-z0-9]{32}$/i', $options['text_string'])) {
$options['text_string'] = '';
}
return $options;
}
On dirait que ça ne marchera pas non plus, et je ne sais pas trop pourquoi.
Mon train actuel de si pour une solution est:
Mais je frappe un mur. De nombreuses options sont définies via des cases à cocher, et lorsque je décoche cette option, le formulaire ne soumet pas le nom de la case à cocher. Par conséquent, je ne peux pas parcourir correctement mon tableau.
Je suppose que ce que je demande, c’est ... COMMENT puis-je faire un rappel à register_settings qui prendra toutes les options de quelque type que ce soit (entrée, case à cocher, etc.), et qui sera pas détruit les valeurs déjà enregistrées dans le tableau qui ne sont pas touchées par les options que je sauvegarde à ce moment.
Toute aide pour ça? Merci !
Ok, après quelques recherches, j'ai découvert que la solution "facile" à mon problème serait de commencer par créer des onglets (comme dans le menu Apparence) et des options. Bien que je ne sois toujours pas expert en la matière, j’ai suivi ce guide en 3 parties qui explique à peu près tout ce qui a trait à la question. Il me suffisait de m'adapter à un plugin, puisqu'il avait écrit son guide avec des thèmes à l'esprit!
Merci à tous ceux qui ont pris le temps de lire!