J'essaie de créer un plugin personnalisé pour WordPress avec une page d'option d'administrateur.
Dans la page d'option, l'utilisateur doit pouvoir cocher une option et si la case à cocher est cochée, le plug-in doit ajouter une section à un formulaire HTML.
Le problème que je rencontre est que la deuxième case à cocher ne stocke pas sa valeur dans la base de données, je ne peux donc pas la vérifier. Si je change l'ordre des codes de déclaration, seule la deuxième case à cocher ne fonctionne pas.
Veuillez noter que mes options de plug-in fonctionnent avec chaque composant et que ce problème ne concerne que les cases à cocher.
Voici la partie case à cocher de mon plugin. Y a-t-il des conflits? Qu'est-ce que je fais mal?
function set_options() {
register_setting( 'checkbox-1-settings', 'my_checkbox_1_name' );
register_setting( 'checkbox-2-settings', 'my_checkbox_2_name' );
}
function admin_page(){
?>
<form method="post" action="options.php">
<?php settings_fields( 'checkbox-1-settings' ); ?>
<?php settings_fields( 'checkbox-2-settings' ); ?>
<?php do_settings_sections( 'checkbox-1-settings' ); ?>
<?php do_settings_sections( 'checkbox-2-settings' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Option 1</th>
<td><input type='checkbox' name='my_checkbox_1_name' <?php checked( get_option('my_checkbox_1_name'), 1 ); ?> value='1'></td>
</tr>
<tr valign="top">
<th scope="row">Option 2:</th>
<td><input type='checkbox' name='my_checkbox_2_name' <?php checked( get_option('my_checkbox_2_name'), 1 ); ?> value='1'></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
<?php
}
function my_plugin() {
$html = '<form>
if (get_option('my_checkbox_1_name')) {
$html .= '<select name="select1" id="test1">
<option selected disabled>select1</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>';
}
else if (get_option('my_checkbox_2_name')) {
$html .= '<select name="select2" id="test2">
<option selected disabled>select2</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>';
}
return $html . '<input type="submit" value="Go!"></form>' . $content;
}
vous enregistrez deux groupes de paramètres distincts pour les champs de configuration et le problème peut être ici.
function set_options() {
register_setting( 'checkbox-1-settings', 'my_checkbox_1_name' );
register_setting( 'checkbox-2-settings', 'my_checkbox_2_name' );
}
utilisez donc un seul groupe de paramètres pour les deux champs pour voir si cela fonctionne.
function set_options() {
register_setting( 'checkbox-settings', 'my_checkbox_1_name' );
register_setting( 'checkbox-settings', 'my_checkbox_2_name' );
}
Mettre à jour
Obtenir les paramètres de l'API et stocker dans un tableau.
$options = (array) get_option( 'plugin_options' );
Maintenant, $ options
est un tableau contenant tous les sous-champs de champs. et vous pouvez obtenir la valeur de n'importe quelle clé en passant simplement cette clé avec ce tableau.
par exemple, pour obtenir une valeur de check_2
$check_two = $options['check_2'];