J'ai essayé d'afficher les paramètres tabulés dans la page des paramètres d'administration à l'aide d'un didacticiel, mais pour moi, je reçois une notification de paramètres enregistrée deux fois.
Je pense que cela est dû au champ des paramètres différents mais basé sur la sélection de l'onglet montre seulement un formulaire en utilisant la condition php. Donc, il ne peut y avoir qu'un seul formulaire avec un settings_fields()
mais comment il affiche les paramètres enregistrés deux fois lorsque je les enregistre. Je ne connais aucune idée. n'importe quel corps peut aider à ce sujet.
Code
<div class="wrap">
<div id="icon-themes" class="icon32"></div>
<h2>Sandbox Theme Options</h2>
<?php settings_errors(); ?>
<?php $active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'd_options'; ?>
<h2 class="nav-tab-wrapper">
<a href="?page=followshape&tab=d_options" class="nav-tab <?php echo $active_tab == 'd_options' ? 'nav-tab-active' : ''; ?>">Display</a>
<a href="?page=followshape&tab=s_options" class="nav-tab <?php echo $active_tab == 's_options' ? 'nav-tab-active' : ''; ?>">Shape</a>
<a href="?page=followshape&tab=Stat" class="nav-tab <?php echo $active_tab == 'Stat' ? 'nav-tab-active' : ''; ?>">Stat</a>
</h2>
<?php if( $active_tab == 'd_options' ) { ?>
<form method="post" action="options.php">
<?php
settings_fields( 'shapet' );
?>
<div class="show_type">
<input type="radio" name="shape" id="radio1" value="1"<?php checked(1,get_option('shape')); ?>/>
<label for="radio1"><img src="<?php echo plugins_url(); ?>/slider/images/1.jpg"></label>
<input type="radio" id="radio2" name="shape" value="2"<?php checked(2,get_option('shape')); ?> />
<label for="radio2"><img src="<?php echo plugins_url(); ?>/slider/images/2.jpg"></label>
<input type="radio" id="radio3" name="shape" value="3"<?php checked(3,get_option('shape')); ?> />
<label for="radio3"><img src="<?php echo plugins_url(); ?>/slider/images/3.jpg"></label>
<input type="radio" id="radio4" name="shape" value="4"<?php checked(4,get_option('shape')); ?> />
<label for="radio4"><img src="<?php echo plugins_url(); ?>/slider/images/4.jpg"></label>
<input type="radio" id="radio5" name="shape" value="5"<?php checked(5,get_option('shape')); ?> />
<label for="radio5"><img src="<?php echo plugins_url(); ?>/slider/images/5.jpg"></label>
<input type="text" name="sh_color" value="<?php echo get_option('sh_color'); ?>" class="ir" />
</div>
<input type="submit" name="submit" />
</form>
<?php
} if($active_tab == 's_options') { ?>
<form method="post" action="options.php">
<?php
settings_fields( 'social' );
for($i=1;$i<=8;$i++){
?>
<lable>Social Network<?php echo $i; ?> </lable><input type="text" name="sfsocial_net<?php echo $i; ?>" value="<?php echo get_option('sfsocial_net'.$i); ?>"/>
<lable>Show </lable><input type="checkbox" name="sfsocial_net_show<?php echo $i; ?>" value="1"<?php checked(1,get_option('sfsocial_net_show'.$i)); ?> />
<lable>Lable</lable><input type="text" name="sfsocial_lable<?php echo $i; ?>" value="<?php echo get_option('sfsocial_lable'.$i); ?>"/>
<br>
<?php }
?>
<input type="submit" name="submit" />
</form>
<?php } if ($active_tab == 'Stat') { ?>
<form method="post" action="options.php">
<?php
echo "graph";
settings_fields('stat');?>
<lable>facebook</lable><input type="text" name="facebookun" value="<?php echo get_option('facebookun'); ?>"/>
<input type="submit" name="submit" />
</form>
<?php
}?>
</div>
Essayé après avoir posté une question de @MrJustin advice
Après avoir appris que je devrais utiliser add_settings_section
et add_settings_field
en dehors de register_setting
Voici le code que j'ai essayé d'un autre tutoriel.
function registering_settings(){
register_setting( 'my-settings-group', 'my-setting' );
add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' );
add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' );
}
add_action('admin_init','registering_settings');
function callback_testing(){
?>
<div class="wrap">
<div id="icon-themes" class="icon32"></div>
<h2>Sandbox Theme Options</h2>
<?php settings_errors(); ?>
<?php $active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'd_options'; ?>
<h2 class="nav-tab-wrapper">
<a href="?page=slug_testing&tab=d_options" class="nav-tab <?php echo $active_tab == 'd_options' ? 'nav-tab-active' : ''; ?>">Display Options</a>
<a href="?page=slug_testing&tab=s_options" class="nav-tab <?php echo $active_tab == 's_options' ? 'nav-tab-active' : ''; ?>">Social Options</a>
<a href="?page=slug_testing&tab=S" class="nav-tab <?php echo $active_tab == 'S' ? 'nav-tab-active' : ''; ?>">Statistics</a>
<a href="?page=slug_testing&tab=new" class="nav-tab <?php echo $active_tab == 'new' ? 'nav-tab-active' : ''; ?>">New</a>
</h2>
<?php if ($active_tab == 'new') { ?>
<form action="options.php" method="POST">
<?php settings_fields( 'my-settings-group' ); ?>
<?php do_settings_sections( 'my-plugin' ); ?>
<?php submit_button(); ?>
</form>
<?php } ?>
<?php if ($active_tab == 'd_options') { ?>
<?php } ?>
<?php if ($active_tab == 's_options') { ?>
<?php } ?>
</div><!-- /.wrap -->
<?php
}
function section_one_callback() {
echo 'Some help text goes here.';
}
function field_one_callback() {
$setting = esc_attr( get_option( 'my-setting' ) );
echo "<input type='text' name='my-setting' value='$setting' />";
}
Même après avoir essayé, les réglages sont enregistrés deux fois. Mais il n'y a qu'un seul formulaire section
avec un settings_fields
et un seul formulaire au total. Pourquoi affiche les paramètres enregistrés deux fois lorsque je clique sur Enregistrer les modifications.
Éditer
register_setting( 'my-plugin', 'my-setting' );
add_settings_section( 'section-one', 'Section One', 'section_one_callback', 'my-plugin' );
add_settings_field( 'field-one', 'Field One', 'field_one_callback', 'my-plugin', 'section-one' );
<form method="post" action="options.php">
<?php if($active_tab == 'new') {
settings_fields( 'my-plugin' );
do_settings_sections( 'my-plugin' );
} else if($active_tab == 'd_options') {
// Do D_Options
} else if($active_tab == 's_options') {
// Do S_Options
}
submit_button();
?>
</form>
Le coupable est:
<?php settings_errors(); ?>
Ce n'est pas nécessaire et produira un deuxième "Paramètres enregistrés". notification s'il n'y a pas d'erreurs.
Edité pour le formatage.
Votre mise en place de votre page d'options de manière non traditionnelle. Voir Ce WP/StackExchange bonne réponse, voici comment vous devriez configurer votre page de paramètres. Cela fonctionne parfaitement. * Remarque: ma réponse est la bonne.
--Modifier--
Essayez ceci: votre affichage réel est toujours un peu éteint, il ne doit pas enregistrer deux fois, j’enroule votre formulaire autour de votre contenu d’affichage réel et mets votre submit_button le contenu.
<form method="post" action="options.php">
<?php if($active_tab == 'new') {
settings_fields( 'my-settings-group' );
do_settings_sections( 'my-plugin' );
} else if($active_tab == 'd_options') {
// Do D_Options
} else if($active_tab == 's_options') {
// Do S_Options
}
submit_button();
?>
</form>
--Un autre Edit--
J'ai remarqué ceci:
// Your Code(s)
register_setting( 'my-settings-group', 'my-setting' );
settings_fields( 'my-settings-group' );
do_settings_sections( 'my-plugin' );
// Should Be
register_setting('my-plugin', 'my-plugin');
settings_fields( 'my-plugin' );
do_settings_sections( 'my-plugin' );
La dernière partie de la add_settings_section () est le groupe d'options lui-même. Donc, "my-plugin" serait le groupe. L'option réelle serait la première partie de add_settings_field ()
Signification: my-plugin ['field-one'] est l'option.
Allez-y, faites ces ajustements et voyez ce que vous obtenez.
Après cela, postez de nouveau avec une mise à jour.