web-dev-qa-db-fra.com

Impossible d'enregistrer la case à cocher

Je sais que c'est un gâchis, mais quelqu'un peut-il me dire pourquoi je ne peux pas sauvegarder dans l'option checkbox de ce plugin?

/* Runs when plugin is activated */
register_activation_hook(__FILE__,'vigtigt_besked_install'); 

/* Runs on plugin deactivation*/
register_deactivation_hook( __FILE__, 'vigtigt_besked_remove' );

function vigtig_besked_install() {
/* Creates new database field */
add_option("vigtigt_data", 'Default', '', 'yes');
add_option("tweakfunction1", 'Default', '', 'yes');
}

function vigtig_besked_remove() {
/* Deletes the database field */
delete_option('vigtigt_data');
delete_option('tweakfunction1');
}

/*———————————————————————*/
function vigtig_besked_html_page() {
?>
<div>
<h2>Vigtige beskeder!</h2>

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>

<table width="900">
<tr valign="top">
<th align="left" width="140" scope="row">Skriv din tekst her:</th>
<td width="700">
<input size="76" name="vigtigt_data" type="text" id="vigtigt_data" value="<?php echo get_option('vigtigt_data'); ?>" />
(f.eks. Undervisning er aflyst pga. sne!)</td>

</tr>
<tr><th align="left" width="140" scope="row">Funktion1:</th><td>

<input size="76" name="tweakfunction1" type="checkbox" id="tweakfunction1" checked="<?php get_option( 'tweakfunction1' ); ?>" />
<?php echo  get_option( 'tweakfunction1' ); ?>
</td></tr>
</table>

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="vigtigt_data,tweakfunction1" />

<p>
<input type="submit" value="<?php _e('Gem ændringer') ?>" /> 
</p>

</form>





<?php if (!current_user_can('manage_options'))  {
        wp_die( __('You do not have sufficient permissions to access this page.') );
    }
    echo '<div class="wrap">';
    echo '<p>Here is where the form would go if I actually had options.</p>';
    echo '</div>'; ?>








</div>


<?php }

if ( is_admin() ){

/* Call the html code */
add_action('admin_menu', 'vigtig_besked_admin_menu');

function vigtig_besked_admin_menu() {
add_menu_page('Vigtigt', 'Vigtige beskeder!', '1','vigtig_besked', 'vigtig_besked_html_page');}
}
1
MadsRH

Vous ne savez pas exactement où vous ajoutez cette fonctionnalité, mais je ne vois nulle part dans ce code où vous utilisez la fonction update_option (). Au-dessus de votre formulaire HTML, vous devez vérifier si le formulaire contient des données, puis mettre à jour l'option.

//Do nonce checking here and 
$Tweak = $_POST['tweakfunction1'] ? $_POST['tweakfunction1'] : '';
update_option('tweakfunction1', esc_html($Tweak));

Wordpress inclut une fonction appelée vérifié () qui vérifie une certaine valeur. Votre balise d’entrée n’a pas non plus d’attribut value. Je l'ai ajouté ci-dessous avec la fonction cochée.

<input size="76" name="tweakfunction1" type="checkbox" id="tweakfunction1" <?php checked('foobar', get_option('tweakfunction1'));?> value='foobar' />
1
Brian Fegter